R语言按0.975分位数筛选tvdata数据集报对象未找到如何解决
错误原因
你编写的索引逻辑存在两处问题,共同触发了该报错:
- R默认会从全局环境中检索
basket对象,你没有明确声明该变量属于tvdata数据框,全局环境中没有单独定义的basket变量,因此触发对象未找到的报错。 - 即使变量能正常检索,
tvdata[筛选条件]的写法默认是筛选列而非筛选行,不符合你按行截取子集的需求,需要补充逗号分隔行、列索引。
可行的修正方案
基础R写法
方法1:明确指定变量所属数据框,补充行筛选的逗号
data <- tvdata[tvdata$basket < quantile(tvdata$basket, 0.975), ]
方法2:使用subset()函数,自动识别数据框内的变量
data <- subset(tvdata, basket < quantile(basket, 0.975))
Tidyverse生态写法
如果你使用dplyr工具包,可以用filter()函数实现更简洁的逻辑:
library(dplyr) data <- tvdata %>% filter(basket < quantile(basket, 0.975))
内容的提问来源于stack exchange,提问作者N_I
相关产品推荐
相关产品推荐

