基于列索引的R数据帧切片

基于列索引的R数据帧切片,r,R,我有一个数据框 data <- data.frame(1:4,5:8,9:12,13:16) 数据您可以使用slice.index: > slice.index(data,1) [,1] [,2] [,3] [,4] [1,] 1 1 1 1 [2,] 2 2 2 2 [3,] 3 3 3 3 [4,] 4 4 4 4 然后构造一个矩阵 > matrix(rep(col

我有一个数据框

data <- data.frame(1:4,5:8,9:12,13:16)

数据您可以使用slice.index:

> slice.index(data,1)
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    2    2    2    2
[3,]    3    3    3    3
[4,]    4    4    4    4
然后构造一个矩阵

> matrix(rep(col_index,4),4,4,byrow=TRUE)
     [,1] [,2] [,3] [,4]
[1,]    1    4    3    2
[2,]    1    4    3    2
[3,]    1    4    3    2
[4,]    1    4    3    2
创建一个掩码

> slice.index(data,1) == matrix(rep(col_index,4),4,4,byrow=TRUE)
      [,1]  [,2]  [,3]  [,4]
[1,]  TRUE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE  TRUE
[3,] FALSE FALSE  TRUE FALSE
[4,] FALSE  TRUE FALSE FALSE
最终

> data[slice.index(data,1) == matrix(rep(col_index,4),4,4,byrow=TRUE)]
[1]  1  8 11 14

@RonakShah,我想你有这个行/列reversed@r2evans哦…我现在明白了。谢谢我认为复制是不正确的?dupe是适用的,但与此相反:dupe想要每一行给定的列,而这个是每一列给定的行。
cbind(…)
的前提是适用的,我认为如果你把它作为一个评论重新发布,它仍然是有用的(尽管有重复)。
data[cbind(col_index,seq_len(ncol(data))]]
@r2evans谢谢,我同意它不是重复的。在我的R生涯中,我从来没有使用过或听说过
slice.index
。有趣的功能。
> data[slice.index(data,1) == matrix(rep(col_index,4),4,4,byrow=TRUE)]
[1]  1  8 11 14