在多个数据帧上执行列选择

时间:2015-02-03 11:35:20

标签: r function dataframe lapply

我已经四处寻找这个答案,他们接近但没有雪茄。我正在尝试在多个数据帧上执行选择列。我可以这样做并返回一个列表,但我希望保留全局环境中的数据帧。我希望将数据帧分开,以便在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)

这将返回dflist上的函数,但数据表保持不变。如何在多个数据帧上应用该函数而不将它们返回到列表中。

非常感谢 中号

1 个答案:

答案 0 :(得分:0)

您的函数返回数据框不变,因为这是您函数中评估的最后一件事。而不是:

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。