如何只准备一组中的实际值
How to only ready real values in a set
这可能是一个简单的问题,但我还没弄明白。
我正在写一个简单的循环。
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 而不是只读“1, 4, 8, ...”。现在我知道我可以使用 na.omit(v6) 删除值中的所有 NA,但我只是想知道是否有一种方法允许 R 只准备 "aa" 中的值而不是通过1 到 129 好吗?
不知道我有没有强调好我的问题。谢谢
通常,如果您在 R 中使用 for 循环,总有更好的方法。
您需要提供测试数据,以便我证明这是可行的,但我相信以下语句无需 for 循环即可完成您想要的操作:
v6[aa] <- sum(as.numeric(Sep1$Units[Sep1$ID %in% aa]))
表达式“v6[aa] <-
”表示 "for the elements in the vector v6
at the positions in the vector aa
, assign the values in the following vector to those positions."
这可能是一个简单的问题,但我还没弄明白。
我正在写一个简单的循环。
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 而不是只读“1, 4, 8, ...”。现在我知道我可以使用 na.omit(v6) 删除值中的所有 NA,但我只是想知道是否有一种方法允许 R 只准备 "aa" 中的值而不是通过1 到 129 好吗?
不知道我有没有强调好我的问题。谢谢
通常,如果您在 R 中使用 for 循环,总有更好的方法。
您需要提供测试数据,以便我证明这是可行的,但我相信以下语句无需 for 循环即可完成您想要的操作:
v6[aa] <- sum(as.numeric(Sep1$Units[Sep1$ID %in% aa]))
表达式“v6[aa] <-
”表示 "for the elements in the vector v6
at the positions in the vector aa
, assign the values in the following vector to those positions."