-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 は、名前 (ベクトル「names」に既に存在する) とともに格納する必要があります。

私は次のことを試しました:

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 に答える