我想在不改变长度的情况下向向量添加元素。在每个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功能可以达到我的预期,或者有没有办法可以修复上面的代码?
感谢任何帮助或建议,我们非常感谢。
答案 0 :(得分:3)
许多问题
2i
不是您要查找的代码,您需要2*i
,2i
会为您提供复数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)