在 R 中添加元素到列表中
在 R 中,有很多方法可以使用循环将任意数量的元素添加到一个列表中,当元素数量较多时,其中一些方法可能会变得迟钝。本教程将介绍在 R 循环中向一个列表追加元素的最有效方法。
实现这种算法的常见方法是创建一个 while
循环,并在循环中使用 c
(concatenate
)命令。在每一次迭代中,通过使用 c
函数增加一个元素。在这个例子中,一个值(i*3
)被添加到一个列表中,直到索引变量达到 10,000。
i <- 1
mylist <- c()
while (i<10) {
mylist <- c(mylist, i*3)
i <- i+1
}
cat(mylist)
输出:
3 6 9 12 15 18 21 24 27
前面例子的问题是,每次执行连接时,整个列表都会被复制。当处理大型数据集时,添加所有元素所需的时间可能是巨大的。
在 R 中使用 length
函数对一个列表进行追加
在循环中向列表中添加任意数量的元素的更有效的方法是在每次迭代中使用 length
函数。使用 length
函数,可以得到列表中的元素数,并将每个新元素分配到最后一个元素后面的索引:length(mylist) + 1
。
下面的例子和前面的例子一样,但效率更高。
i <- 1
mylist <- c()
while (i<10) {
mylist[[(length(mylist) + 1)]] <- i*3
i <- i+1
}
cat(mylist)
输出:
3 6 9 12 15 18 21 24 27
设置列表的上界
如果你事先知道你的循环会迭代多少次,那么你可以定义一个固定长度的向量,用来存放所有的元素,而不是增加元素列表长度。例如,如果你知道你的循环会迭代 10000 次,你可以这样初始化向量。
mylist <- vector("list", 10000)
之后,你可以使用 for
循环,根据每个元素的索引来设置它的值。
i <- 1
for (i in 1:10000) {
mylist[[i]] <- i*3
}
如果你不知道迭代次数,但你有一个上限,你可以用这个上限定义向量。之后,当循环执行完毕,你可以只挑选非空元素。例如,如果你知道你的循环不会迭代超过 10,000 次,你可以用 10,000 个元素来初始化你的向量,即使你不会使用所有的元素。
相关文章
R 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。