r - 我们不能将管道链输出传递给线性模型 lm() 点占位符吗?
问题描述
我想知道如何将管道操作的输出直接传递到lm()
.
例如,我可以将以下yay
向量lm()
直接传递给。
set.seed(40)
yay = c(rnorm(15), exp(rnorm(15)), runif(20, min = -3, max = 0))
lm(yay~1)
#> Call:
#> lm(formula = yay ~ 1)
#> Coefficients:
#> (Intercept)
#> -0.09522
但是当我尝试这样的事情时,它抛出了一个错误。
library(tidyverse)
library(palmerpenguins)
data("penguins")
filter_penguins <- penguins %>% filter(species == "Adelie")
filter_penguins %>%
filter(island == "Torgersen") %>%
select(bill_length_mm) %>%
pull() %>%
lm(. ~ 1)
#> Error in formula.default(object, env = baseenv()) : invalid formula
我还尝试将pull()
输出保存到对象中,然后将其输入lm()
,它可以工作。但是为什么点占位符不能这样工作呢?
非常感谢。
解决方案
这个问题是lm()
在管道内部将给定的数据视为formula
参数。因此,数据放错了位置。尝试:
filter_penguins %>%
filter(island == "Torgersen") %>%
select(bill_length_mm) %>%
lm(data = ., pull(.) ~ 1)
推荐阅读
- java - 如何在下面的嵌套静态类中使用 Context 而不会发生内存泄漏或尝试在空对象引用异常上调用虚拟方法?
- django - 区分 signal.instance 、 Django/signals 中哪个字段发生了变化
- pip - Python2.7-pip 未安装模块
- python - 我想在一个 json 中嵌套三个表并将该 json 传递给 HTML,以便我们可以显示表?
- xcode - Xcode:如何在文件检查器中复制文件?
- c - 使用损坏的顶部大小获取内存内存分配错误
- reactjs - 类中缺少构造函数主体
- vba - 使用 VBA 或 PowerShell 将所有 MS Access SQL 查询导出到文本文件
- ui-automation - 如何在封闭的 shadowDOM 下自动化网页
- python-3.x - pymongo:如何按名称作为字符串访问 MongoDB 集合?