R评估序列中的数字以获取数据框中的特定列

R assessing numbers from a sequence to get specific columns in a dataframe

如果我有序列,请说:

a <- (seq(from=10, to=ncol(x), by=2))
b <- (seq(from=16, to=ncol(x), by=2))

我想根据顺序访问 data.frame 中的特定列,我将如何在 R 中执行此操作?

手动我想要这个:

y <- df[, c(10:16, 12:18, 14:20 )]

我自动想要这样的东西:

y<-df[, c(a[1]:b[1], a[2]:b[2])]

但这不起作用。

你有什么建议吗?非常感谢!我试图自己寻找解决方案但失败了。

假设没有长度问题(ab的长度相同),例如

a<-seq(from=10, to=ncol(x)-6, by=2)
b<-seq(from=16, to=ncol(x), by=2)

你可以做到:

y<-df[, as.vector(apply(cbind(a,b),1,function(x){x[1]:x[2]}))]

使用与@CathG 相同的向量 ab,您还可以使用 mapply

y <- x[, mapply(seq, a, b)]

或更快的版本

y <- x[, mapply(`:`, a, b)]