r - 将列添加到数据框列表并进行增量添加/循环通过 df 进行简单添加
问题描述
我有这个数据框(实际上是那些 dfs 的列表):
ALL <- data.frame(x = 1:3, y = c("a", "b", "c"))
我想添加一个将某个值累加到数据帧末尾的列,如下所示:0 + 0.05 = 0.05、0.05 + 0.05 = 0.1、0.1 + 0.05 = 0.15 等等。
所以,在我的例子中,结果将是
ALL <- data.frame(x = 1:3, y = c("a", "b", "c"), z=(0,0.05,0.1)
我想要走的路是将 cbind 与 lapply 一起使用(假设 ALL 是 dfs 的列表): ALL<- lapply(ALL, function(x) cbind(x, z = ???))
但是我的大脑并没有想出正确的 z 公式。
非常感谢您的帮助。
问候
小号手
解决方案
我们可以使用transform
添加新列seq
来生成序列。
lapply(list_df, function(df) transform(df, z = seq(0, by = 0.05, length.out = nrow(df))))
#[[1]]
# x y z
#1 1 a 0.00
#2 2 b 0.05
#3 3 c 0.10
#[[2]]
# x y z
#1 1 a 0.00
#2 2 b 0.05
#3 3 c 0.10
#4 4 d 0.15
在tidyverse
我们可以做同样的事情
library(dplyr)
library(purrr)
map(list_df, ~.x %>% mutate(z = seq(0, by = 0.05, length.out = n())))
数据
ALL <- data.frame(x = 1:3, y = c("a", "b", "c"))
ALL1 <- data.frame(x = 1:4, y = c("a", "b", "c", "d"))
list_df <- list(ALL, ALL1)