如何将结果保存到R中的空向量?

时间:2016-02-20 22:48:59

标签: r

我在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)中启动空向量的正确方法吗?

由于

2 个答案:

答案 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]
如果两个对象都是向量并且具有相同的长度,那么

应该可以做到。