“闭包”类型的对象在交叉验证中不是子集

时间:2014-06-06 07:35:32

标签: r

我在进行交叉验证时遇到问题 我做了十倍交叉验证,我得到了以下错误

Error in data[currentFold, ] : object of type 'closure' is not subsettable

以下是我使用的代码:

k <- 10;
folds <- cvsegments(nrow(data2), k);
result1 <- rep (NA, nrow (data2))
insituValidation <- rep (NA, nrow (data2))

for (fold in 1 : k) {
   currentFold <- folds[[fold]]

   trainDat <- data2[-currentFold,]

   model3 = nls(Height ~ a*(Diameter)^2+b*Diameter+c, data = data2, start = list(a = 1.2, b=.9,c=.5), algorithm="port")
   #end model

   # The results of the predictions of the model
   result1 [currentFold] <- predict(model3, data[currentFold,]) 
   insituValidation <- data2[currentFold,3]
}

之前我在另一个数据集中使用了相同的代码并且它工作但现在使用新数据集时,会出现上述问题。

请帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

closure类型的对象是R中的函数。

您正在使用的对象data是函数,因此您无法使用向量[对其进行子集化。默认情况下,变量data是一个函数。您可以找到其定义here

您必须忘记使用矩阵初始化变量data