首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的cbind数据

循环中的cbind数据
EN

Stack Overflow用户
提问于 2018-03-26 22:33:34
回答 2查看 1.1K关注 0票数 1

我有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)中的错误:未定义的选定列”

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-26 23:01:28

我认为for循环不会比do.call(cbind, dfs)更快,但我不清楚您是否真的有这样的列表。我想您可能需要从字符对象构建这样的列表。这个答案假设您还没有一个列表,但是您确实将所有数据按升序编号,以n结尾,其中十进制表示可能有多个数字。

代码语言:javascript
复制
 t <- do.call( cbind, mget( paste0("s.dfs", 1:n) ) )

Pasqui使用ls内部的mget和一个模式来捕获所有编号的数据文件。我会用一个稍微不同的数字,因为你建议这个数字高于9,这就是他的模式所能捕捉到的所有内容:

代码语言:javascript
复制
  ls(pattern = "^s\\.df[0-9]+")  # any number of digits
                # ^ need double escapes to make '.' a literal period or fixed=TRUE
票数 3
EN

Stack Overflow用户

发布于 2018-03-26 22:39:24

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49501680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档