这可能只是一个简单的问题,但我还没弄明白。
我正在写一个简单的循环。
v6<-c()
> aa
[1] 1 4 8 9 10 12 15 16 17 18 19 20 21 25 29 30 38
[18] 39 46 47 48 49 52 53 54 60 65 69 73 75 81 82 83 85
[35] 86 87 90 91 92 94 96 97 98 99 100 101 104 105 106 110 112
[52] 113 114 116 117 118 119 122 125 126 128 129
for (i in aa){
v6[i]<-sum(as.numeric(Sep1$Units[Sep1$ID==i]))
}
> v6
[1] 3800 NA NA 2600 NA NA NA 7700 13500 11900 NA
[12] 15600 NA NA 2000 17700 9600 11600 3400 11200 6600 NA
[23] NA NA 6000 NA NA NA 8800 2400 NA NA NA
[34] NA NA NA NA 2600 4500 NA NA NA NA NA
[45] NA 23400 36000 4000 5100 NA NA 9200 5400 7000 NA
[56] NA NA NA NA 5000 NA NA NA NA 60000 NA
[67] NA NA 7200 NA NA NA 20000 NA 39600 NA NA
[78] NA NA NA 23600 1600 10600 NA 39000 1000 6200 NA
[89] NA 3000 100 1400 NA 12800 NA 5100 2000 32000 7000
[100] 10900 4800 NA NA 3200 14600 24000 NA NA NA 16200
[111] NA 5000 28800 16800 NA 2600 40000 800 8400 NA NA
[122] 18000 NA NA 24800 13600 NA 4600 11700
我意识到R有红色1到129而不只是阅读&#34; 1,4,8,...&#34;。现在我知道我可以使用na.omit(v6)删除值中的所有NA,但我只是想知道是否有一种方法允许R只准备好&#34; aa&#34;请不要通过1到129吗?
我不知道我是否已经很好地强调了我的问题。谢谢
答案 0 :(得分:1)
通常,如果你在R中使用for循环,总会有更好的方法。
你需要提供测试数据才能让我证明这是有效的,但我相信如果没有for循环,下面的语句会做你想要的:
v6[aa] <- sum(as.numeric(Sep1$Units[Sep1$ID %in% aa]))
表达式“v6[aa] <-
”表示“对于向量v6
中向量aa
中的元素,将以下向量中的值指定给这些位置。”< / p>