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])]
但这不起作用。
你有什么建议吗?非常感谢!我试图自己寻找解决方案但失败了。
假设没有长度问题(a
和b
的长度相同),例如
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 相同的向量 a
和 b
,您还可以使用 mapply
:
y <- x[, mapply(seq, a, b)]
或更快的版本
y <- x[, mapply(`:`, a, b)]
如果我有序列,请说:
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])]
但这不起作用。
你有什么建议吗?非常感谢!我试图自己寻找解决方案但失败了。
假设没有长度问题(a
和b
的长度相同),例如
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 相同的向量 a
和 b
,您还可以使用 mapply
:
y <- x[, mapply(seq, a, b)]
或更快的版本
y <- x[, mapply(`:`, a, b)]