【发布时间】:2015-10-30 06:18:14
【问题描述】:
我正在使用包含 3 列的数据框 (dt):Time、Temp、Species,例如
Temp Time Species
1 10 241 Species-X
2 11 241 Species-X
3 12 241 Species-X
4 13 241 Species-Y
5 14 241 Species-Y
6 15 240 Species-Z
... ... ... ...
41 50 178 Species-Z
第三列有五个物种。
我想应用一个线性模型(lm),其中Temp 作为我的自变量,Time 作为因变量。
所以我想仅针对物种 X 或 Y 对其进行测试。此外,我想以给定的Temp 间隔(假设为 20 - 29 摄氏度)测试我的物种之一。
我试过了:
lm(Temp ~ Time, data = td[Species = Species-Y])
for(i in unique(td$Species)){
model <- list(model)
model[i] <- lm(td$Time ~ td$Temp)
}
model <- function (dados) {
return(lm(td$Time[,dados] ~ td$Temp[,dados]))
}
model(dados = td$Species-X)
【问题讨论】:
-
我会使用
lm的subset功能...lapply(c("Species-X", "Species-Y"), function(x) lm(Time ~ Temp, data=td, subset=Species==x)) -
您在上面的第一次尝试几乎可以工作......您需要使用引号,并且需要一个额外的逗号。所以试试
lm(Temp ~ Time, data = td[td$Species == "Species-Y" , ])