如何使用R中的占位符引用具有公共前缀的多个变量

时间:2014-02-20 13:13:10

标签: r dataframe

假设我有一个data.frame:

x.a <- c(1,2,3,4,5)
y.b <- c(2,3,4,5,6)
y.c <- c(5,1,0,9,2)
y.d <- c(5,6,7,3,1)
x.e <- c(2,6,1,2,3)

df <- data.frame(x.a,y.b,y.c,y.d,x.e)

假设我想对变量y.b,y.c,y.d进行排名:

df[2:4] <- sapply(df[2:4], function(x) rank(x))

有没有办法将函数应用于前缀为y.的所有变量? E.g:

df[y.*] <- sapply(df[y.*], function(x) rank(x))

1 个答案:

答案 0 :(得分:5)

使用grep和正则表达式,如下所示:

df <- data.frame(x.a,y.b,y.c,y.d,x.e)
df[, grep("y\\..", names(df))]
  y.b y.c y.d
1   2   5   5
2   3   1   6
3   4   0   7
4   5   9   3
5   6   2   1

您必须在变量名称中转义.,第二个.用于匹配所有内容。