我的数据框:
library(usl)
dput(df)
structure(list(load = c(1L, 18L, 36L, 72L, 108L, 144L, 216L),
throughput = c(64.9, 995.9, 1652.4, 1853.2, 1828.9, 1775,
1702.2)), .Names = c("load", "throughput"), class = "data.frame", row.names = c(NA,
-7L))
xv=c("load")
yv=c("throughput")
capacity<-c(30)
我使用nls创建模型:
usl.model <- usl(as.formula(paste(yv, '~', xv)), data = df)
鉴于此模型,我需要根据负载的增长做一些预测:
growth<-c(20)
pred<-predict(usl.model, data.frame(xv = tail(df[,xv],1)*(1+capacity/100)))
我一直收到这个错误:
Error in `[.data.frame`(newdata, , object@regr, drop = TRUE) :
undefined columns selected
如何在预测函数中引用xv?因为xv是可变的吗?
答案 0 :(得分:2)
在您编辑问题之前,它包含了一个错误,我建议的副本就是解决方案。您无法使用$
来引用变量中的列名。
然后你改变了问题,发现你还遇到了第二个问题,那就是原始数据框有一个名为load
的变量,而新数据框必须有一个同名的列。 / p>
只需使用setNames
:
new_df <- setNames(data.frame(tail(df[,xv],1)*(1+growth/100)),xv)
pred<-predict(usl.model,newdata = new_df)