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

R中用rosnerTest筛选异常值遇逻辑/双精度向量错误求解

获取Rosner检验中Outlier为TRUE的行号向量

下面提供几种正确的实现方法,并说明你之前代码的问题:

正确实现方法

1. Base R 原生方式

用subset同时筛选行和列

# 筛选Outlier为TRUE的行,仅保留Obs.Num列
outlier_rows_df <- subset(var.ros.test$all.stats, Outlier == TRUE, select = Obs.Num)
# 转换为向量
outlier_rows_vec <- outlier_rows_df$Obs.Num

直接索引(更简洁)

outlier_rows_vec <- var.ros.test$all.stats[var.ros.test$all.stats$Outlier == TRUE, "Obs.Num"]

2. dplyr 管道方式

你之前的filter语法错误,管道会自动把前一步的数据集传入filter,无需重复指定:

library(dplyr)

outlier_rows_vec <- var.ros.test$all.stats %>%
  filter(Outlier == TRUE) %>%  # 仅保留Outlier为TRUE的行
  pull(Obs.Num)  # 直接提取Obs.Num列转为向量

你之前代码的问题说明

  • 第一次使用subset时,只指定了select参数来选择列,但没有添加行筛选条件,因此返回了所有行的Obs.Num。
  • 后续filter报错是因为:管道后重复传入了var.ros.test$all.stats(filter的第一个参数已经是管道传来的数据框);另外Outlier是逻辑类型,不需要用引号包裹TRUE,直接使用TRUE即可。

内容的提问来源于stack exchange,提问作者burphound

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:22:57