如何给定变量名称的数据框子集?

时间:2016-04-06 20:20:29

标签: r

我的数据框:

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是可变的吗?

1 个答案:

答案 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)