关于dplyr here的文章说"[]"(方括号)可用于对过滤后的Tibbles进行子集化,如下所示:
filter(mammals, adult_body_mass_g > 1e7)[ , 3]
但我得到一个“找不到对象”的错误 . 这是在更知名的数据集“iris”上复制错误
library(dplyr)
iris %>% filter(Sepal.Length>6) [,c(1:3)]
过滤器_( . data,.dots = lazyeval :: lazy_dots(...))出错:找不到对象'Sepal.Length'
我还想提一下,我故意不想使用 select()
在dplyr中使用本机子集,因为我需要一个向量输出而不是单个列上的数据帧 . 不幸的是,dplyr总是强制数据帧输出(出于好的理由) .
2 回答
dplyr
这样做的方法是使用select
:您也可以使用
{}
,以便在应用[
之前完成过滤:或者,如另一个答案所示,使用
.
表示法指示数据应该与[
相关的位置:您还可以显式加载
magrittr
并使用extract
,这是[
的"pipe-able"版本:您引用的博客条目在
dplyr
时间过了 - 大约3岁 .dplyr
已经发生了很大的变化 . 我建议在撰写或不写作时提出建议,但我建议找一些更新的资料来了解这个经常变化的资料包 .你需要一个额外的管道:
对不起,忘了括号前的
.
.注意:如果您坚持使用tidyverse语法并使用select作为最后一个操作,那么您的代码可能会更具可读性 .