使用向量/矩阵/列表作为索引在R中切片/子集



我们可以将第二行第四列的元素作为

iris[2,4]

如果我有一个切片元素的向量/矩阵,如何做同样的事情。ie我能得到以下任何一个与iris[2,4]相同的输出吗?(或任何类似的东西,不创建任何临时变量(

a = c(2,4)
b = matrix(c(2,4), nrow=1)
c = list(2,4)
iris[a]
iris[b]
iris[c]

值被强制为字符,因为您使用matrix方法进行子集设置,并且其中一列具有类字符。

我们可以通过两种方式规避这一点。要么我们事先删除字符列,

v <- c(2, 4)
m <- matrix(c(2, 4), nrow=1)
l <- list(2, 4)
iris[,-5][t(v)]
# [1] 0.2
iris[,-5][m]
# [1] 0.2
iris[,-5][do.call(cbind, l)]
# [1] 0.2

或者我们使用CCD_ 2方法进行子集设置。(irisdata.frame,因此两者都适用(

iris[[rev(v)]]
# [1] 0.2
iris[[rev(c(m))]]
# [1] 0.2
iris[[rev(unlist(l))]]
# [1] 0.2

最新更新