我正在使用R中的子集函数,我想知道是否有一种方法可以将列名定义为变量,然后对该列名称进行子集化?
例如,现在我有这样的事情:
data.subset <- subset(df, age >= n1 & age < n2)
但是我想说要分配身高而不是年龄。我想要一个我可以设置为"height"
的变量,而子集将在高度上进行子集化。我这样做是为了拥有一个适应性强的功能。像这样:
my.column <- "height"
data.subset <- subset(df, my.column >= n1 & my.column < n2)
答案 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),]