-1

需要在循环的每次迭代中存储从函数调用返回的结果。

for (i in 1:x)
{
    datax <- trainingdata[[i]]
    levels(datax$label) <- c(-1, 1)
    train_x<-datax[, -1]
    train_x<-data.matrix(train_x)
    trainy<-datax[, 1]

    s_x<-svm.fs(train_x, y=trainy, fs.method="scad",
                          cross.outer=0, grid.search="discrete",
                          lambda1.set=lambda1.scad, parms.coding="none",
                          show="none", maxIter=1000, inner.val.method="cv",
                          cross.inner=5, seed=seed, verbose=FALSE)
    # Store the result s_x
}

s_x 需要与名称(已经存在于向量“名称”中)一起存储。

我尝试了以下方法:

s_x_results <- data.frame(x=names, y=data.frame(length(trainingdata)))

for (i in 1:x)
{
    datax <- trainingdata[[i]]
    levels(datax$label) <- c(-1, 1)
    train_x<-datax[, -1]
    train_x<-data.matrix(train_x)
    trainy<-datax[, 1]

    s_x<-svm.fs(train_x, y=trainy, fs.method="scad",
                          cross.outer=0, grid.search="discrete",
                          lambda1.set=lambda1.scad, parms.coding="none",
                          show="none", maxIter=1000, inner.val.method="cv",
                          cross.inner=5, seed=seed, verbose=FALSE)

    s_x_results[i]$y <- s_x
}

但我收到错误消息:

Error in `$<-.data.frame`(`*tmp*`, "scad.fix", value = list(classes = c(1L,  : 
replacement has 11 rows, data has 91

最终对象 s_x_results 保存在某个文件中以备将来通信。

4

2 回答 2

3

尝试replicate

 res <- replicate(x,funcall)
于 2013-02-25T08:08:19.943 回答
2

尝试lapply

myFunc <- function(i) {
    datax <- trainingdata[[i]]
    levels(datax$label) <- c(-1, 1)
    train_x<-datax[, -1]
    train_x<-data.matrix(train_x)
    trainy<-datax[, 1]

    svm.fs(train_x, y=trainy, fs.method="scad",
                cross.outer=0, grid.search="discrete",
                lambda1.set=lambda1.scad, parms.coding="none",
                show="none", maxIter=1000, inner.val.method="cv",
                cross.inner=5, seed=seed, verbose=FALSE)
}

s_x_results <- lapply(1:x, myFunc)

#Access individual results using s_x_results[[1]], s_x_results[[2]] and so on.

这应该为您提供 x 数据帧的列表。

PS:未经测试的功能,因为没有提供样本数据。

于 2013-02-25T08:12:05.657 回答