我在R中创建一个空向量时遇到问题,并将另一个向量的结果保存到它们中。这是我的代码:
k<-vector(mode = "numeric", length = 0)
for (j in length(Pe)){
if ((Pe[j])>0) {
k[j]<-Pe[j]
}
}
向量Pe
的长度是1000.我只需要在向量k中保存值mayor而不是零,但是当我键入向量k时,显示窗口显示:
numerical(0)
这是在R(k)中启动空向量的正确方法吗?
由于
答案 0 :(得分:3)
k <- c()
代替。但我认为这不会让你得到你想要的东西。
当元素p不是>时,会发生什么? 0? R将用NA填充k [p],而我认为你想要k是仅仅是Pe的元素的较短向量,其中&gt; 0,不是相同的长度,而是NA&#39; s?
如果是这样,你甚至不需要循环。尝试
k <- Pe[Pe > 0]
这将为您提供仅包含Pe&gt;元素的向量0,没有NA&#39; s。
请原谅我糟糕的英语,希望我帮助你
答案 1 :(得分:1)
正如MaxPD指出的那样
for (j in length(Pe)) print(j)
只打印Pe的长度,你应该
for (j in seq_len(length(Pe))) print(j)
## or
for (j in seq_along(Pe)) print(j)
## or
for (j in 1:length(Pe)) print(j)
但在你的情况下,我甚至不会使用循环
k<-vector(mode = "numeric", length = 0)
k[Pe > 0] <- Pe[Pe > 0]
如果两个对象都是向量并且具有相同的长度,那么应该可以做到。