用于从R中的列表创建数据帧的For循环

时间:2020-03-27 17:53:49

标签: r dataframe for-loop cbind

我有一个列表,其中包含任意数量的25个数据帧。所以我想从列表的内容中创建25个数据帧,然后将它们绑定为一个。本质上来说,我想要的x列表是:

entrypoint.sh

效果很好。这是我没有成功的尝试:

df1 <- as.data.frame(x[1])
dfi <- as.data.frame(x[i])
df.final = cbind(df1,dfi)

任何帮助,我们都感激不尽

1 个答案:

答案 0 :(得分:0)

尝试使用reduce中的purrr函数和bind_cols中的dplyr函数

基本上,您希望将数据帧列表传递到reduce中,该列表将通过您提供的函数(在本例中为bind_cols)进行迭代。这将首先将df1df2绑定,然后将结果数据帧与df3绑定,依此类推。

library(tidyverse)

df1 <- tibble(
  x = c(1, 2, 3),
  y = c(2, 3, 4)
)

df2 <- tibble(
  a = c("a", "b", "c"),
  b = c("x", "y", "z")
)

df3 <- tibble(
  a = c("h", "n", "c"),
  b = c("q", "j", "z")
)

dfs <- list(df1, df2, df3)

result <- dfs %>%
  reduce(bind_cols)

result

# A tibble: 3 x 6
      x     y a     b     a1    b1   
  <dbl> <dbl> <chr> <chr> <chr> <chr>
1     1     2 a     x     h     q    
2     2     3 b     y     n     j    
3     3     4 c     z     c     z