我已经四处寻找这个答案,他们接近但没有雪茄。我正在尝试在多个数据帧上执行选择列。我可以这样做并返回一个列表,但我希望保留全局环境中的数据帧。我希望将数据帧分开,以便在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上的函数,但数据表保持不变。如何在多个数据帧上应用该函数而不将它们返回到列表中。
非常感谢 中号
答案 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。