在多个数据帧上执行列 select

Performing column select over multiple dataframes

我已经四处寻找这个答案,他们很接近但没有雪茄。我正在尝试在多个数据帧上执行列选择。我可以做到这一点和 return 一个列表,但我希望在全局环境中保留数据帧。我想将数据帧分开以便于使用和在 Rstudio 中的可见性。例如,对于一个数据框,我根据名称选择列:

E07 <- E07[,c("Block","Name","F635.Mean","F532.Mean","B635.Mean","B532")]

我在 dflist 中列出了 x 个数据帧,所以我编写了这个函数:

columnselect<-function(df){df[,c("Block","Name","F635.Mean","F532.Mean","B635.Mean","B532")];df}

然后我希望在 dflist 上应用它:

lapply(X=dflist,FUN=columnselect)

这return是 dflist 的功能,但数据表保持不变。如何在不 return 在列表中将它们应用到多个数据帧上的功能。

非常感谢 M

您的函数 returns 数据框未更改,因为这是您函数中最后计算的内容。而不是:

columnselect<-function(df){
               df[,c("Block","Name","F635.Mean","F532.Mean","B635.Mean","B532")]
               df}

应该是:

columnselect<-function(df){
               df[,c("Block","Name","F635.Mean","F532.Mean","B635.Mean","B532")]
               }

函数中的最后一个 df 只是返回了函数中传递的完整 df。

至于第二个问题,您希望 data.frames 在全局环境中而不是在列表中(如您所知,这是不好的做法;最好将它们保留在列表)你需要 list2env 函数即:

mylist <- lapply(X=dflist,FUN=columnselect)

list2env(mylist, envir = globalenv())

使用这个 data.frames 全局环境将被更新。