我想使用for循环遍历列表,并将以下函数应用于所有列表元素:
new_x = do.call("rbind",mget(ls(pattern = "^x.*")))其中x是数据帧的特定名称模式。当列表元素i是函数的名称模式时,如何遍历列表?我们的目标是得到这样的东西:
for (i in filenames){
i = do.call("rbind",mget(ls(pattern = "^i.*")))
}所以我的问题基本上是如何在名称模式中使用i,这样我就能够使用循环将数据帧的更多独立部分绑定到xpart1、xpart2、xpart3到x;ypart1、ypart2、ypart3到y等等。
提前谢谢你!
发布于 2019-11-25 03:19:02
如果我们使用的是for循环,那么一个选项
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
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
xs <- paste0("xpart", 1:100)
ys <- paste0("ypart", 1:100)
xsdat <- do.call(rbind, mget(xs))
ysdat <- do.call(rbind, mget(ys))https://stackoverflow.com/questions/59021397
复制相似问题