R语言 将一系列不同大小的字符串组合成一个字符串,每个字符串对应一行

hc2pp10m  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(94)

我有一个R中的2个 Dataframe 的列表,并希望将它们组合成R中的一个 Dataframe 。我的数据框列表如下所示:

df1 <- data.frame(d=c(0,1,2),n=c(5,5,5),i=c(2,3,3))
df2 <- data.frame(d=c(0,1,2,3),n=c(5,5,5,5),i=c(2,3,3,4))

list <- list(df1,df2)

我怎样才能把一个 Dataframe 列表转换成一个 Dataframe ,看起来像这样:

new_df <- data.frame(d=c(0;1;2,0;1;2;3),n=c(5;5;5,5;5;5;5),i=c(2;3;3,2;3;3;4))

在哪里,在新的框架中,每个框架的列被转换为由一个子分隔?使得新的 Dataframe 看起来像这样:

hgc7kmma

hgc7kmma1#

result = 
  lapply(list, \(df) lapply(df, paste, collapse = ";")) |>
  lapply(as.data.frame) |>
  do.call(what = rbind)
result
#         d       n       i
# 1   0;1;2   5;5;5   2;3;3
# 2 0;1;2;3 5;5;5;5 2;3;3;4
j1dl9f46

j1dl9f462#

df1 <- data.frame(d=c(0,1,2),n=c(5,5,5),i=c(2,3,3))
df2 <- data.frame(d=c(0,1,2,3),n=c(5,5,5,5),i=c(2,3,3,4))
list1 <- list(df1,df2)

library(dplyr)
library(purrr)

list1 %>%  
  map(~summarise(.x, across(everything(), ~paste(.x, collapse = ";")))) %>% 
  bind_rows()

#>         d       n       i
#> 1   0;1;2   5;5;5   2;3;3
#> 2 0;1;2;3 5;5;5;5 2;3;3;4

创建于2023-09-19带有reprex v2.0.2

相关问题