我有一些带有名称的数据框:
MeanPlots1,MeanPlots2,MeanPlots3等。
我正在尝试编写一个for循环以在每个数据帧上执行一系列方程。
我正在尝试使用paste0函数。
我想让x成为每个数据集的一列。因此,代码应类似于以下代码行:
x <- Meanplots1$PAR
但是,由于我想将其放入for循环中,所以我要像这样格式化它:
for (i in 1:3){
x <- paste0("Meanplots",i,"$PAR")
Dmodel <- nls(y ~ ((a*x)/(b + x )) - c, data = dat, start = list(a=a,b=b,c=c))
}
这是将x分配给列表“ Meanplots1 $ PAR”而不是实际的列。关于如何解决此问题的任何想法?
我们可以用data.frame
获得list
中的所有mget
lst1 <- mget(ls(pattern = '^MeanPlots\\d+$'))
然后将list
与lapply
循环并应用模型
DmodelLst <- lapply(lst1, function(dat) nls(y ~ ((a*x)/(b + x )) - c,
data = dat, start = list(a=a,b=b,c=c)))