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

ira*_*erd 0 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)
Run Code Online (Sandbox Code Playgroud)

假设我想对变量yb,yc,yd进行排名:

df[2:4] <- sapply(df[2:4], function(x) rank(x))
Run Code Online (Sandbox Code Playgroud)

有没有办法将函数应用于具有前缀的所有变量y.?例如:

df[y.*] <- sapply(df[y.*], function(x) rank(x))
Run Code Online (Sandbox Code Playgroud)

Vic*_*orp 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
Run Code Online (Sandbox Code Playgroud)

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