R中sum(),length(which())和nrow()之间的差异

Soc*_*tum 6 r

当试图获得指定数量的观察值的"计数"时,似乎这些函数中的每一个都起作用,因为它们得到相同的结果.但是这些功能如何在后台以不同的方式运行,以及在哪种情况下将一个功能换成另一个呢?

sum(grade.data$Quiz >= (100*.45))

length(which(grade.data$Quiz >= (100*.45)))

nrow(grade.data[grade.data$Quiz >= (100*.45),])
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 5

当缺少值时,中间的答案不会给出误导性的答案.其他两个都会.

数字1对强制为1和0的逻辑向量求和.如果您添加了na.rm,那么当NA存在时它将是有效的.

数字2确定数字向量的长度.

第三个构造一个子集,然后计算行数.我认为与其他两个相比,它具有相当低的效率,并且具有NA值的问题.如果您添加& !is.na(grade.data$Quiz)到内部的逻辑表达式[ , ],您将获得有效的答案.

第三种方法(如第三种方法(也是效率低的)没有NA问题)将是:

nrow( subset( grade.data, Quiz >= (100*.45) ) )
Run Code Online (Sandbox Code Playgroud)

  • 必须构建一个全新的数据帧. (3认同)