我有n个名为"s.dfx“的数据格式,其中有x=1:n,所有的数据格式都有7列,具有不同的名称。现在我想把所有的数据绑定起来。
我知道科曼德
T<-cbind.data.framework(s.df1,s,df2,…,s.dfn)
但是我想在一个循环中优化和绑定它们,因为n是一个很大的数字。
我试过了
for(t2 in 1:n){ t<-cbind.data.drame(s.df[t2]) }
但我得到了“[.data.frame(s.df,t2)中的错误:未定义的选定列”
有人能帮忙吗?
发布于 2018-03-26 23:01:28
我认为for循环不会比do.call(cbind, dfs)更快,但我不清楚您是否真的有这样的列表。我想您可能需要从字符对象构建这样的列表。这个答案假设您还没有一个列表,但是您确实将所有数据按升序编号,以n结尾,其中十进制表示可能有多个数字。
t <- do.call( cbind, mget( paste0("s.dfs", 1:n) ) )Pasqui使用ls内部的mget和一个模式来捕获所有编号的数据文件。我会用一个稍微不同的数字,因为你建议这个数字高于9,这就是他的模式所能捕捉到的所有内容:
ls(pattern = "^s\\.df[0-9]+") # any number of digits
# ^ need double escapes to make '.' a literal period or fixed=TRUE发布于 2018-03-26 22:39:24
library(purrr) #to be redundant
#generating dummy data frames
df1 <- data.frame(x = c(1,2), y = letters[1:2])
df2 <- data.frame(x = c(10,20), y = letters[c(10, 20)])
df3 <- data.frame(x = c(100, 200), y = letters[c(11, 22)])
#' DEMO [to be adapted]: capturing the EXAMPLE data frames in a list
dfs <- mget(ls(pattern = "^df[1-3]"))
#A Tidyverse (purrr) Solution
t <- purrr::reduce(.x = dfs, .f = bind_cols)
#Base R
do.call(cbind,dfs)
# or
Reduce(cbind,dfs)https://stackoverflow.com/questions/49501680
复制相似问题