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

时间:2019-11-06 06:52:26

标签: r subset slice

我们可以在第二行第四列获取元素

iris[2,4]

如果我有切片元素的矢量/矩阵,该怎么做。即我可以得到以下任何内容以提供与iris [2,4]相同的输出吗? (或类似的内容,而无需创建任何临时变量)

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

1 个答案:

答案 0 :(得分:3)

该值被强制转换为character,因为您正在使用matrix方法进行子设置,并且其中一列属于class character。

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

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

或者我们使用list方法进行子设置。 (irisdata.frame,因此两者均适用)

iris[[rev(v)]]
# [1] 0.2
iris[[rev(c(m))]]
# [1] 0.2
iris[[rev(unlist(l))]]
# [1] 0.2
相关问题