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

问题描述 投票:1回答:1

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

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]
r subset slice
1个回答
0
投票

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

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

v <- c(2, 4)
m <- matrix(c(2, 4), nrow=1)
l <- list(2, 4)

iris[,-5][rbind(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
© www.soinside.com 2019 - 2024. All rights reserved.