0

我想在不改变长度的情况下将元素添加到向量中。在每个 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 函数可以满足我的期望,或者有什么方法可以修复上面的代码?

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

4

1 回答 1

3

若干问题

  • 向量只有长度,没有行和列
  • 对于 2 次 i,2i不是您要查找的 r 代码,而是您想要的2*i2i会给您复数0+2i
  • 您正在寻找功能`[`提取或替换对象的部分

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
 }

查看?`[`有关如何提取或替换向量、列表、数组、data.frames 等元素的详细信息

如果你想要一个 500 行 1 列的矩阵2,4,6,8,...998,1000

values <- matrix(seq(2,1000,by=2), nrow = 500)
于 2012-10-15T22:13:08.257 回答