当我使用2或numbes高于0时,结果是:
sum(!is.na(HD[HD$VAL >= 24, 1]))
# [1] 53
sum(!is.na(HD[HD$VAL >= 24, 2]))
# [1] 53
当我什么都没用的时候:
sum(!is.na(HD[HD$VAL >= 24, ]))
# [1] 9276
0
sum(!is.na(HD[HD$VAL >= 24, 0]))
# [1] 0
为什么?
示例数据是:
[1] 17 NA 18 19 20 15 NA NA 13 1 12 15 12 NA NA 17 15 11 NA NA NA 1 NA NA 17 13 NA 8 15 NA 8
[32] 16 22 11 14 19 10 NA 14 18 11 NA 8 12 20 NA 8 12 NA NA 6 15 NA 17 13 10 NA NA 21 17 14 NA
....
答案 0 :(得分:3)
当您在第二个索引中使用数字时,您的代码仅对这些列中的值进行求和
sum(!is.na(HD[HD$VAL >= 24, 1]))
仅对第1列求和,其中值不是NA。 将列索引留空时,将对值不为NA的所有列求和。
答案 1 :(得分:2)
在Access-Control-Allow-Origin: *
中,索引从1而不是从0开始。因此,使用0来选择列将不会选择任何内容,我们得到0作为输出。
对于问题的第二部分,当我们没有选择任何列,即将Access-Control-Allow-Origin: root-url-here.com
的rhs留空时,它选择整个数据集列。 1,2表示所选列。
在前两种情况下,它将第1,2列的子集对应于大于24的'VAL'。然后,我们使用!is.na转换为逻辑向量并获得总和。在这种情况下,您在该列1或2的子集中有53个非NA值
即
R
但是,我们不需要进行此子集化。我们可以使用,
sum(!is.na(HD[HD$VAL >= 24, 1]))
和第二列类似
&