You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何下述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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:18:02