基于列索引的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