首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用`%>%`与‘and’和‘`rbind`’

使用`%>%`与‘and’和‘`rbind`’
EN

Stack Overflow用户
提问于 2018-03-21 09:34:45
回答 1查看 912关注 0票数 5

我有一个数据格式的Z看起来像

代码语言:javascript
复制
t  x  y  d
0  1  2  1
1  2  3  1
2  3  4  1
0  1  2  2
1  2  3  2
2  3  4  2

d是一个因子列。我知道,我想用lm来拟合一个线性模型,并将它作为一个新列添加到dataframe中,并将其添加到y over t中。

我试过了

代码语言:javascript
复制
Z %>%
  filter(d == 1) %>%
  lm(y ~ t)

但这让我在说"Error in as.data.frame.default(data) : cannot coerce class ""formula"" to a data.frame"时出错了。但

代码语言:javascript
复制
lm(y ~ t, data = Z)

效果很好。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 09:36:09

我们需要提取data.表示数据对象

代码语言:javascript
复制
Z %>% 
  filter(d == 1) %>% 
  lm(y ~ t, data = .)
#Call:
#lm(formula = y ~ t, data = .)

#Coefficients:
#(Intercept)            t  
#          2            1  

summarise/mutate/group_by和其他tidyverse函数中,我们可以简单地传递列名。在这里,我们需要从数据环境中获取列,或者在list中创建summarise输出。

代码语言:javascript
复制
library(magrittr)    
Z %>%
  filter(d ==1 ) %>%
  summarise(lmout = list(lm(y ~ t))) %>%
  pull(lmout) %>%
  extract2(1)
#Call:
#lm(formula = y ~ t)

#Coefficients:
#(Intercept)            t  
#          2            1  
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49402641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档