【问题标题】:Loop through data frames to produce new column循环遍历数据框以生成新列
【发布时间】:2019-11-16 18:33:49
【问题描述】:

我有 10 个数据框(Shape1、Shape 2、Shape 3 等),每个数据框都包含相同的列名。我如何在 10 个数据帧中循环这个命令,以便每个数据帧都包含一个名为 integration 的新列?

Shape1$Integration<-cumtrapz(Shape1$Time, Shape1$CA) 

非常感谢

【问题讨论】:

    标签: r loops for-loop


    【解决方案1】:

    在基础 R 中,您可以使用 mget 创建一个数据框列表,遍历每个数据框并使用 transform 创建一个新列。

    lapply(mget(paste0("Shape", 1:10)), function(x) 
            transform(x, Integration = cumtrapz(Time, CA)))
    

    tidyverse 中可以这样做

    library(tidyverse)
    map(mget(paste0("Shape", 1:10)), ~.x %>% mutate(Integration = cumtrapz(Time, CA)))
    

    【讨论】:

    • 嗨,Ronak,那太好了,效果很好。使用您的第一个示例,我如何将 Integration 绑定到原始的 10 个 Shape 数据帧?
    • @Crabbe1 您可以将来自lapply 的输出存储在一个对象中。说list_dflist_df &lt;- lapply(mget(paste0("Shape", 1:10)), function(x) transform(x, Integration = cumtrapz(Time, CA)))。然后执行list2env(list_df, .GlobalEnv),您将再次获得 10 个不同的数据帧。
    猜你喜欢
    • 2020-02-17
    • 2021-03-31
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多