我环顾四周寻找这个答案,他们靠得很近,但没有雪茄。我试图在多个数据文件上执行列的选择。我可以这样做并返回一个列表,但我希望在全球环境中保留数据格式。为了便于使用和在Rstudio中可见性,我希望将数据文件保持单独。例如,我根据列的名称选择列,作为一个dataframe:
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上返回函数,但是数据表保持不变。如何在不将函数返回到列表中的情况下对多个数据文件应用该函数。
非常感谢M
发布于 2015-02-28 05:58:49
您的函数返回的数据帧不变,因为这是在函数中计算的最后一件事。而不是:
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。
https://stackoverflow.com/questions/28297911
复制