我有一个不同地点、年份和最高温度的数据框架。我想对每个特定地点的温度和年份进行线性回归。如果我可以编写一个for循环,将相同的线性回归模型分别应用于所有地点,并提供一个包含地点名称的输出,而不是对每个地点进行线性回归,那就更好了。我制作了一些虚拟数据,我有25个网站在实际的df。
data<- data.frame(site= c('alder','alder','alder','alder','alder','alder','alder','alder', 'oak','oak','oak','oak','oak','oak','oak','oak' ),
year= c('2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015','2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015'),
temp= c(0.5,3, 12, 42, 67, 8, 12, 22, 11, 4, 3, 6, 76, 1, 11, .9))
到目前为止,我是这么做的:
output<- vector("list", length(unique(data$site)))
sites<- unique(data$site)
for (i in sites) {
data %>% filter(site=i) =j
lm(formula = temp~year, data = j)=k
output[[i]]=k
}
我不确定让for循环调用对应于一个站点的行的子集的最佳方法是什么。
Error in data %>% filter(site = i) <- j :
could not find function "%>%<-"
我已经确定了tidyverse在我的图书馆里
谢谢你的帮忙!
3条答案
按热度按时间h5qlskok1#
这里有几处错别字,
=
应该是==
,并且执行->
而不是=
。第三个问题是对[[i]]
的赋值-这里i
是每个站点的值。因此,我们可能需要命名output
以获得正确的赋值使用
tidyverse
,我们可以通过几种方式来实现这一点或者使用
reframe
# dplyr版本〉= 1.1.0ylamdve62#
使用碱基R:
xtfmy6hx3#
显示的数据太小,无法估计sd,但假设您实际上有更多数据,请使用
lmList
:给予