【发布时间】:2019-11-16 11:10:49
【问题描述】:
我有 2000 株小麦,在 40 天内生长。 我想对每个植物执行 coeff 函数,以找到 3 个时间点产生的二次方程的系数。 (a, b, 和 c)
(1) coef(lm(y~poly(x,2,raw=TRUE)) 函数完全按照我想要的方式工作。
(2) 但是,我的数据呈现方式需要我手动设置 x 和 y。
(3) 因此,我融化了我的数据,并订购了它。
(4) 我想创建一个循环,将“Day”列中的前三个设置为 x。然后我希望它取“高度”列中的前三个并将其设置为 y。
那我想执行 coeff 函数。
最后我希望它显示我需要的系数输出,最好是在一个新的数据表中。
然后对所有小麦植物每三行重复一次,它们代表每个小麦 ID。
1) 这个函数有效,给我系数:a, b, c
x<-c(1,2,3)
y<-c(1,10,4)
coef(lm(y~poly(x,2,raw=TRUE)))
2) 这就是我的数据最初的样子
A = matrix(c(5, 4, 2, 10, 10, 4, 5, 15, 6),nrow=3, ncol=3)
colnames(A)<-c("10", "25", "40")
rownames(A)<-c("Wheat 1", "Wheat 2", "Wheat 3")
A
3) 这是我的融化格式
A.melted<-as.data.frame(melt(A, id.vars="ID"))
A.melted<-A.melted[with(A.melted,order(Var1)),]
colnames(A.melted) <- c("WheatID", "Day", "Height")
A.melted$Day<-as.numeric(as.character(A.melted$Day))
A.melted
#
4) 这就是我想要用我的循环做的事情......
- 每 3 行,
-
x<-A.melted[,2] y<-A.melted[,3]coef(lm(y~poly(x,2,raw=TRUE)))- 编译系数的东西:a、b、c
我只是不熟悉循环的语法,我很想得到任何提示和建议。仔细阅读 Google 告诉我,除非绝对需要,否则不应执行循环,因为我可能会遇到更多问题 - 因此我也对非循环技术持开放态度。
【问题讨论】:
标签: r loops dataframe data-manipulation