如何在R中向列表中的多个 Dataframe 添加新行

axr492tv  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(154)

我有一个包含多个数据框的列表,我希望能够向年的每个数据框添加新行
我希望能够同时编辑我所有的 Dataframe ,因此我首先将 Dataframe 合并到一个列表中

df1 <- data.frame (first_column  = c(0),
               second_column = c(1),
               third_column = c(2))
df2 <- data.frame (first_column  = c(3),
               second_column = c(4),
               third_column = c(5))
df3 <- data.frame (first_column  = c(6),
               second_column = c(7),
               third_column = c(8))
df.list<-list(df1,df2,df3)
names(df.list)<-c("df1","df2","df3")

接下来,我想向每个 Dataframe 添加一行年份,如下所示
| 第一列|第二列|第三栏|
| - ------|- ------|- ------|
| 无|1个|第二章|
| 二○ ○ ○年|二○ ○ ○年|二○ ○ ○年|
虽然我希望能够添加不同的年份到不同的 Dataframe (2000年到df1,2001年到df2,2002年到df3等)。
我曾尝试使用lapply为每个 Dataframe 创建一个新的空白行,但效果不佳。

newlist <- lapply(df.list, function(x) insertRows(x, 2, new = NA)

我也不知道如何添加不同的年份到不同的 Dataframe 的新行,一旦我得到的空白行添加到 Dataframe 。任何建议将不胜感激!

htzpubme

htzpubme1#

使用Map

Map(rbind, df.list, seq_along(df.list)-1 + 2000)
  • 输出
$df1
  first_column second_column third_column
1            0             1            2
2         2000          2000         2000

$df2
  first_column second_column third_column
1            3             4            5
2         2001          2001         2001

$df3
  first_column second_column third_column
1            6             7            8
2         2002          2002         2002
xqnpmsa8

xqnpmsa82#

如果要添加名称与数据框名称匹配的命名值列表

add <- list(df2 = rep(2001, 3), df3 = rep(2002, 3))

add
$df2
[1] 2001 2001 2001

$df3
[1] 2002 2002 2002

使用sapply将每个条目添加到现有的数据列表中。帧

sapply(names(df_list), function(x) rbind(df_list[[x]], add[[x]]), simplify=F)
$df1
  first_column second_column third_column
1            0             1            2

$df2
  first_column second_column third_column
1            3             4            5
2         2001          2001         2001

$df3
  first_column second_column third_column
1            6             7            8
2         2002          2002         2002

相关问题