首页 > 解决方案 > R中的命令循环?

问题描述

我有一组命令为大量子集创建新数据帧。命令是相同的,但唯一改变的是子集的一些数字(从 1 到 n)。

命令是:

a1 <- data[block$block.1$main.inds,]
a2 <- data[block$block.2$main.inds,]
a3 <- data[block$block.3$main.inds,]
.
.
.
a50 <- data[block$block.50$main.inds,]

我试图通过使用以下代码来自动化它,但没有成功:

for (i in 1:50) {
        a[i]<- data[block$block.[i]$main.inds,]
}

任何帮助,将不胜感激!

标签: rloops

解决方案


最好不要在全局环境中创建多个对象。在目前的情况下,我们可以使用assign

for(i in 1:50) {
    assign(paste0('a', i), data[block[[paste0('block.', i)]]]$main.inds,])
 }

或者最好将其存储在list

lst1 <- lapply(paste0('block.', 1:50), function(bl) data[block[[bl]]]$main.inds,])
names(lst1) <- paste0("a", 1:50)

推荐阅读