我们尝试对八个不同的数据集运行一个循环,然后以标准化格式保存输出。
Dataframe 称为df1
、df2
、df3
等。
我不能共享数据(here is a sample of the data),但每个数据集都是df1
的子集--因此它始终具有相同的列。df1
将显示为:
age wt sex
10 200 F
15 250 F
20 300 F
12 200 M
13 250 M
25 300 M
对于不同的条件,子集化的df
s将是例如df2<-df1%>%filter(sex=="F")
、df3<-df1%>%filter(sex=="M")
等。
下面是一个小的代码示例,我们希望为每个 Dataframe 运行该代码。
nls.mon <- nls(wt~A*(1-exp(k*(t0-age))),
data=df1,
start = list(A=253.6,k=.03348,t0=32.02158))
aad_mon_est <- data.frame(tidy(nls.mon))
mon_A_est <- as.numeric(aad_mon_est[1, "estimate"])
mon_k_est <- as.numeric(aad_mon_est[2, "estimate"])
mon_t0_est <- as.numeric(aad_mon_est[3, "estimate"])
nls.von <- nls(wt ~A*(1-(1/3)*exp(k*(t0-age)))^3,
data=df1,
start=list(A=253.6,k=.03348,t0=32.02158))
aad_von_est <- data.frame(tidy(nls.von))
von_A_est <- as.numeric(aad_von_est[1, "estimate"])
von_k_est <- as.numeric(aad_von_est[2, "estimate"])
von_t0_est <- as.numeric(aad_von_est[3, "estimate"])
是否有办法让循环遍历每个 Dataframe (df1
、df2
、df3
等),然后保存aad_arc_B_est
、aad_arc_k_est
和aad_arc_mx_est
?
我们希望输出如下所示:
dataframe model A_est k_est t0_est
df1 nls.mon 250 10 0.14
df1 nls.von 350 12 0.13
df2 nls.mon 150 11 0.15
df2 nls.von 240 14 0.16
df3 nls.mon 220 11 0.11
df3 nls.von 450 15 0.10
我们正在考虑使用一个索引--类似于for (i in dataframe)
,让它遍历每个 Dataframe ,dataframe[i,] <- row_i
在?后面追加每行
但是,也许有更好的办法呢?
3条答案
按热度按时间a5g8bdjr1#
您是否考虑过将代码更改为函数?您可以将所有data. frame存储在一个命名列表中,然后对列表中的每个data.frame应用函数,然后收集结果。
zaqlnxep2#
您可以将代码 Package 在函数中,然后将该函数应用于 Dataframe 列表
nnsrf1az3#
最适合我们的解决方案是这个(它有点长,但也很灵活/用户友好)。
我们不仅对初始参数(A,t0,k)进行了计算,而且还可以应用于反正切函数之外的其他方程。
输出如下: