【发布时间】:2019-11-16 18:33:49
【问题描述】:
我有 10 个数据框(Shape1、Shape 2、Shape 3 等),每个数据框都包含相同的列名。我如何在 10 个数据帧中循环这个命令,以便每个数据帧都包含一个名为 integration 的新列?
Shape1$Integration<-cumtrapz(Shape1$Time, Shape1$CA)
非常感谢
【问题讨论】:
我有 10 个数据框(Shape1、Shape 2、Shape 3 等),每个数据框都包含相同的列名。我如何在 10 个数据帧中循环这个命令,以便每个数据帧都包含一个名为 integration 的新列?
Shape1$Integration<-cumtrapz(Shape1$Time, Shape1$CA)
非常感谢
【问题讨论】:
在基础 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)))
【讨论】:
lapply 的输出存储在一个对象中。说list_df,list_df <- lapply(mget(paste0("Shape", 1:10)), function(x) transform(x, Integration = cumtrapz(Time, CA)))。然后执行list2env(list_df, .GlobalEnv),您将再次获得 10 个不同的数据帧。