如何在不改变大小的情况下将元素附加到矢量?

时间:2012-10-15 22:03:21

标签: r vector for-loop append

我想在不改变长度的情况下向向量添加元素。在每个for循环之后,向量应该只包含500行(1列)。这是我到目前为止所拥有的。

# initialize the vector
values<- vector(mode = "integer", length= 500)

for (i in 1:500) {
values<-append(values, 2i, after = i-1)
}

因此values向量应包含以下元素:2,4,6,8,10, ... 998, 1000

append函数的问题在于,如果我向向量添加一个元素,它会将向量的长度改为1.所以在for循环的末尾,value向量将是长度1000而不是500,并包含元素:2,4,6,8, ... , 998, 1000, 0,0,0 [followed by zeros]

是否有其他R功能可以达到我的预期,或者有没有办法可以修复上面的代码?

感谢任何帮助或建议,我们非常感谢。

1 个答案:

答案 0 :(得分:3)

许多问题

  • 向量只有长度,而不是行和列
  • 我2次2i不是您要查找的代码,您需要2*i2i会为您提供复数0+2i。< / LI>
  • 您正在寻找功能`[`提取或替换对象的部分

您是否只是尝试创建一个向量2,4,6,...,998,1000,如果是,那么

values <- seq(2,1000,by=2)

会奏效。

append将附加,因此(根据R中的定义,以及英文)创建一个比原始更长的矢量。

让循环按预期工作

# initialize a vector of 0's
values <- rep(0L, 500)

for (i in 1:500) {
  # replace the ith element with 2i
  values[i] <- 2*i
}

表示数组

values <- array(rep(0L,500), dim = c(500,1))

 for (i in 1:500) {
  # replace the ith element in the first column with 2i
  values[i,1] <- 2*i
 }

请查看?`[`以获取有关如何提取或替换向量,列表,数组,数据框架等元素的详细信息

如果您想要一个包含500行且1列填充2,4,6,8,...998,1000

的矩阵
values <- matrix(seq(2,1000,by=2), nrow = 500)