gpt4 book ai didi

r - 将值 append 到 R 中的空向量?

转载 作者:行者123 更新时间:2023-12-03 04:24:49 26 4
gpt4 key购买 nike

我正在尝试学习 R,但不知道如何 append 到列表。

如果这是 Python,我会的。 。 .

#Python
vector = []
values = ['a','b','c','d','e','f','g']

for i in range(0,len(values)):
vector.append(values[i])

如何在 R 中执行此操作?

#R Programming
> vector = c()
> values = c('a','b','c','d','e','f','g')
> for (i in 1:length(values))
+ #append value[i] to empty vector

最佳答案

在 for 循环中追加对象会导致每次迭代时都会复制整个对象,这导致很多人说“R 很慢”,或者“应该避免 R 循环”。

BrodieG评论中提到:最好预先分配所需长度的向量,然后在循环中设置元素值。

这里有几种将值 append 到向量的方法。所有人都灰心丧气。

append 到循环中的向量

# one way
for (i in 1:length(values))
vector[i] <- values[i]
# another way
for (i in 1:length(values))
vector <- c(vector, values[i])
# yet another way?!?
for (v in values)
vector <- c(vector, v)
# ... more ways

help("append")会回答你的问题并节省你写这个问题的时间(但会导致你养成坏习惯)。 ;-)

请注意vector <- c()不是空向量;这是NULL 。如果您想要一个空字符向量,请使用 vector <- character() .

循环前预分配向量

如果您绝对必须使用for循环,则应在循环之前预先分配整个向量。这比 append 较大的向量要快得多。

set.seed(21)
values <- sample(letters, 1e4, TRUE)
vector <- character(0)
# slow
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
# user system elapsed
# 0.340 0.000 0.343
vector <- character(length(values))
# fast(er)
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
# user system elapsed
# 0.024 0.000 0.023

关于r - 将值 append 到 R 中的空向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com