首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在名称模式中使用iteration元素

在名称模式中使用iteration元素
EN

Stack Overflow用户
提问于 2019-11-25 03:13:22
回答 1查看 50关注 0票数 0

我想使用for循环遍历列表,并将以下函数应用于所有列表元素:

代码语言:javascript
复制
new_x = do.call("rbind",mget(ls(pattern = "^x.*")))

其中x是数据帧的特定名称模式。当列表元素i是函数的名称模式时,如何遍历列表?我们的目标是得到这样的东西:

代码语言:javascript
复制
for (i in filenames){
  i = do.call("rbind",mget(ls(pattern = "^i.*")))
}

所以我的问题基本上是如何在名称模式中使用i,这样我就能够使用循环将数据帧的更多独立部分绑定到xpart1xpart2xpart3xypart1ypart2ypart3y等等。

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 03:19:02

如果我们使用的是for循环,那么一个选项

代码语言:javascript
复制
v1 <- ls(pattern = "^x.*")
lst1 <- vector('list', length(v1))
for(i in seq_along(v1)){
        lst1[[i]] <- get(v1[i])
    }

do.call(rbind, lst1)

或者,如果我们需要使用i来创建pattern,我们可以使用paste

代码语言:javascript
复制
lst1 <- vector('list', length(filenames))
names(lst1) <- filenames
for(i in filenames){
       lst1[[i]] <- get(ls(pattern = paste0(i, ".*")))
 }
do.call(rbind, lst1)

注意:get返回单个对象的值,而mget返回list中的多个对象。如果我们使用for循环,我们假设它在循环中返回一个对象,并且只需要get

根据OP的说明,我们也可以使用mget

代码语言:javascript
复制
xs <- paste0("xpart", 1:100)
ys <- paste0("ypart", 1:100)
xsdat <- do.call(rbind, mget(xs))
ysdat <- do.call(rbind, mget(ys))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59021397

复制
相关文章

相似问题

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