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

问题描述 投票:0回答:1

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

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

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

   for (i in 1:length(x){
     df[i] = as.data.frame(x[i])
     df.final = cbind(df[i]+1)
     }

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

r dataframe for-loop cbind
1个回答
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  

0
投票

我们可以使用

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.