我的理解是 dplyr::bind_rows() 仅对数据帧进行操作。为什么下面两个是相同的?
# Load pkgs, set seed
library(dplyr)
set.seed(1)
# Create toy data
foo <- list(df1 = data.frame(A = rnorm(3), B = rnorm(3)),
df2 = data.frame(C = rnorm(3), B = rnorm(3)),
df3 = data.frame(C = rnorm(3), A = rnorm(3)))
df1 <- bind_rows(foo)
# Combine all sources into 1 source
for (i in 1:(length(foo) - 1)){
foo[[i+1]] <- dplyr::bind_rows(foo[[i]], foo[[i+1]])
}
# Extract final df from list
df2 <- foo[[length(foo)]]
# Check for identical
identical(df1, df2)
Run Code Online (Sandbox Code Playgroud)
小智 9
根据https://rdrr.io/cran/dplyr/man/bind.html
“每个参数可以是一个数据框、一个可以是一个数据框的列表或一个数据框列表。”
bind_rows(foo)
Run Code Online (Sandbox Code Playgroud)
传递“数据框列表”。
尽管
bind_rows(foo[[i]], foo[[i+1]])
Run Code Online (Sandbox Code Playgroud)
传递数据帧。
顺便说一句,您无法传递rbind数据框列表,这就是您必须使用的原因
do.call(rbind, foo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6357 次 |
| 最近记录: |