In one piece of my code, I need to select certain columns of my matrix based on binary matrix I have, and store it in the list, but I face with following problem. Does anybody know what's the problem? Here is my matrix and code:
> data
A B C D
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> select<-c(1,0,1,0)
> p<-data[,select, drop=FALSE]
> p
A A
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
My expected output is :
> p
A C
[1,] 1 11
[2,] 2 12
[3,] 3 13
[4,] 4 14
[5,] 5 15
You'll need to convert it to a logical vector or else it will treat 1 and 0 as column numbers:
data[,as.logical(select), drop=F]
# A C
# 1 1 11
# 2 2 12
# 3 3 13
# 4 4 14
# 5 5 15
You can also try.
When you are just supplying select
you are telling it to select columns by column number.
When you are supplying select==1
you are first getting a logical vector and using that to select columns.
data <- matrix(1:20, nrow = 5, dimnames = list(NULL, c("A", "B", "C", "D")))
select <- c(1, 0, 1, 0)
data[, select == 1]
## A C
## [1,] 1 11
## [2,] 2 12
## [3,] 3 13
## [4,] 4 14
## [5,] 5 15
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With