首页 > 解决方案 > 如何在小标题上解开 which.min

问题描述

/R-newb。我的 which.min 调用在我的数据框的一列上工作正常,但在加载 dplyr which.min 时不再工作。是因为 df 现在是 tibble 吗?任何解决方法?

> which.min(Analytic_traces_raw[,1]) #********************WORKS FINE HERE**
[1] 1
> library(dplyr)

Attaching package: ‘dplyr’
The following objects are masked from ‘package:stats’:
    filter, lag
The following objects are masked from ‘package:base’:
    intersect, setdiff, setequal, union

> which.min(Analytic_traces_raw[,1]) #*********************NOW IT'S BROKEN**
Error in which.min(Analytic_traces_raw[, 1]) : 
  (list) object cannot be coerced to type 'double'

> head(Analytic_traces_raw[,1]) #**TYPE IS DBL, BUT TIBBLE TROUBLE**?
# A tibble: 6 x 1
  `t_Pur23Mar18_TP7-24`
                  <dbl>
1              0.000417
2              0.00375 
3              0.00708 
4              0.0104  
5              0.0138  
6              0.0171  

标签: rdataframedplyrtibble

解决方案


并不是which.min说“破坏”,而是小标题“破坏”了 R 中的默认行为。通常,对于数据帧,Analytic_traces_raw[,1]会丢弃维度并变成向量。小标题改变了这种行为,因此期望“正常”行为的 R 函数将会中断。尝试Analytic_traces_raw[[1]]

library(dplyr)
which.min(mtcars[,1])
[1] 15
> mtcars_tbl <- as_tibble(mtcars)
> which.min(mtcars_tbl[,1])
Error in which.min(mtcars_tbl[, 1]) : 
  (list) object cannot be coerced to type 'double'
> which.min(mtcars_tbl[[1]])
[1] 15

推荐阅读