使用 R 中的 lapply() 对列表中的所有帧执行数据帧计算 [重复]

Posted

技术标签:

【中文标题】使用 R 中的 lapply() 对列表中的所有帧执行数据帧计算 [重复]【英文标题】:Performing data frame calculation on all frames in a list using lapply() in R [duplicate] 【发布时间】:2022-01-14 13:14:02 【问题描述】:

我正在研究一种适用于单个数据框的计算:

df <- data.frame(A = c(9,0),
                 B = c(10,1),
                 C = c(6,2),
                 D = c(9,3),
                 E = c(14, 4),
                 F = c(10, 3))

for (i in 1:ncol(df))
  if (i == 1)df[3:4,1] <- c(0,df[1,1])
  else
    df[3,i] <- df[4,i-1]
    df[4,i] <- sum(df[4,i-1], df[1,i]) - df[2,i]
    

df
#  A  B  C  D  E  F
#1 9 10  6  9 14 10
#2 0  1  2  3  4  3
#3 0  9 18 22 28 38
#4 9 18 22 28 38 45

如果我有一个数据框列表,我将如何进行相同的计算?

【问题讨论】:

见list-of-frames。 【参考方案1】:

将其包装在一个函数中,并使用lapply 应用于data.frames 的list

f1 <- function(df) 

  for (i in 1:ncol(df))
      if (i == 1)df[3:4,1] <- c(0,df[1,1])
     else
     df[3,i] <- df[4,i-1]
      df[4,i] <- sum(df[4,i-1], df[1,i]) - df[2,i]
       
    
     df


-在列表上应用函数

lapply(lst1, f1)

【讨论】:

以上是关于使用 R 中的 lapply() 对列表中的所有帧执行数据帧计算 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中的数据帧列表上运行 PCA

如何使用lapply来计算r中列表中的唯一值

使用 R 将多个数据帧写入 .csv 文件

使用 lapply 返回环境中的数据帧

对具有相同结构的几个数据集使用lapply并可能进行for循环以提取和计算每个数据帧的值

如何将 lapply 的输出保存(分配)到 R 中的单个变量中?