【问题标题】:Performing column select over multiple dataframes对多个数据框执行列选择
【发布时间】:2015-02-03 11:35:19
【问题描述】:

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

非常感谢 M

【问题讨论】:

  • 这是什么语言?
  • @EdChum R. OP 甚至标记了它。

标签: r function dataframe lapply


【解决方案1】:

您的函数会返回未更改的数据帧,因为这是您的函数中评估的最后一件事。而不是:

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 将被更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多