我正在编程一个带n层的盒子模型。我想为我在盒子模型中定义的每个图层生成一个数据框,并在每个数据框的每一列中执行计算。我已经初始化使用此代码数据帧:生成n个数据帧并追加到列表中
##Initialize layer energy+water balance dataframes
calcs <- c("Vwin", "Vwout", "Vsin","Vsout","Pistd","Vwnet","Psin","Psout","Vw","Vemax","Sw","Cp","Kt","Qwout","Qtop","Qbot","Qsides","Qnet","Tavg")
layer_tabs<-list()
for(i in 2:(layers-1)){
nam <- paste("layer_",i,sep = "")
assign(nam,data.frame(matrix(vector(),t,length(calcs),dimnames = list(c(),calcs))))
append(layer_tabs, nam=nam)
}
现在对于在我Calcs(计算)载体命名为每列我需要在每个层中的数据帧执行特定的计算。我想要将生成的图层数据框附加到列表中,我可以循环使用或使用apply函数,然后使用其变量名中的数字通过数据框为每列写OR函数/方程。我试图追加数据帧,因为他们产生的空列表“layer_tabs”返回的错误:
Error in append(layer_tabs, nam = nam) : unused argument (nam = nam)
尝试阅读帮助页面,'append'以确定是否该函数的作用,你需要什么,以及如何如果是这样使用它。 – Frank
错误消息是因为'append'中没有名为'nam'的参数。另外,您的'layer_tabs'对象没有更新,因为每次修改结果时都必须指定结果'layer_tabs < - append(layer_tabs,nam')。 – nrussell
你不应该使用'assign'或者'append'。只要在代码中看到这两个函数,我就绝对相信有一个更可读和更高效的解决方案(针对您的实际问题)。 – Roland