使用带有可变列的子集函数?

时间:2014-06-03 19:43:08

标签: r

我正在使用R中的子集函数,我想知道是否有一种方法可以将列名定义为变量,然后对该列名称进行子集化?

例如,现在我有这样的事情:

data.subset <- subset(df, age >= n1 & age < n2)

但是我想说要分配身高而不是年龄。我想要一个我可以设置为"height"的变量,而子集将在高度上进行子集化。我这样做是为了拥有一个适应性强的功能。像这样:

my.column <- "height"
data.subset <- subset(df, my.column >= n1 & my.column < n2)

1 个答案:

答案 0 :(得分:4)

如果坚持使用subset,您可以使用eval(parse(text=paste(...)))(唉!),但考虑到您要做的事情,subset将比它的价值更麻烦。

my.column <- "height"
data.subset <- df[df[[my.column]] >= n1 & df[[my.column]] < n2),]

通过定义between函数,您可以使其更紧凑:

between <- function(x,val1,val2) x>=val1 & x < val2
df[between(df[[my.column]],n1,n2),]