为何下述R代码输入x=50时输出结果为2而非预期的8?
问题根因
- R中
data.frame对象调用length()函数返回的是列数,而非行数。你筛选得到的hscores是包含id、grade两列的dataframe,因此length(hscores)固定返回2,和匹配行数无关。 - 你的筛选逻辑无错误,当x=50时符合
grade>50的记录确实为8条。
修复方法
将最后一行的print(length(hscores))替换为以下任意一种正确写法即可得到匹配的行数:
- 使用专门统计dataframe行数的
nrow()函数:print(nrow(hscores)) - 提取单列后计算长度:
print(length(hscores$grade))
修复后的完整代码如下:
input <- readLines('stdin') x <- as.integer(input[1]) data <- data.frame( "id" = c(1:10), "grade" = c(75, 26, 54, 90, 86, 93, 48, 71, 66, 99) ) hscores <- subset(data,grade>x) print(nrow(hscores))
内容的提问来源于stack exchange,提问作者Hirta
相关产品推荐
相关产品推荐

