将函数应用于 data.frame 中的命名变量

Apply a function to named variables in data.frame

我有一个 data.frame a 和一个变量名称向量 alist:

a <- data.frame(x1=rnorm(20),x2=rnorm(20),x3=rnorm(20),x4=rnorm(20),x5=rnorm(20),x6=rnorm(20),x7=rnorm(20),x8=rnorm(20),x9=rnorm(20),x10=rnorm(20))
alist<-c("x3","x4","x7","x9")

如何将一个函数应用到 a,以便它只影响 alist 中的变量名称,而不影响 a 的子集?这意味着在 alist 中命名的 a 中的变量将替换为函数的输出,其余变量保持不变。

我总是可以 运行 一个函数,例如 log(a[alist]) 并将输出与 a 合并,但必须有更直接的方法吗?

这通常有效:

a[,alist] <- sapply(a[,alist], ...) 

以下作品:

a[alist] = apply(a[alist], 2, log)

以上替换值仅记录在 "alist".

中指定的数据框 "a" 的那些列