0

Rにフォルダー内の一連のファイルを読み取らせ、それらのクロス積を返すのに問題があります。

1 つの test.csv ファイルと n 個の train.csv ファイルを含むフォルダーがあります。

フォルダーを読み込んで、test のクロス積と各トレーニング ファイルを含むファイルを返すには、ループが必要です。したがって、ファイルの行は次のようになります。

test*train01
test*train02
test*train03
...

2 つの定義された行に対してそれを作成するスクリプトを作成しましたが、それをフォルダー全体と必要なパターンに適応させる方法がわかりません。

data01 <- as.matrix(read.csv(file = "test.csv", sep = ",", header=FALSE))
data02 <- as.matrix(read.csv(file = "train.csv", sep = ",", header=FALSE))
test <- list()
test01<- list()
test02<- list()
i<- 1
while (i <= 25){
    test01[[i]] <- c(data01[i,  ])
    test02[[i]] <- c(data02[i,  ])
    test[[i]]<- crossprod(test01[[i]],test02[[i]])
    i <- i+1
}
write.csv(test, file="testing.csv", row.names = FALSE)
4

1 に答える 1

0

試す:

test <- function(data) {
data01 <- as.matrix(read.csv(file = "test.csv", sep = ",", header=FALSE))
data02 <- as.matrix(read.csv(file = data, sep = ",", header=FALSE))
test <- list()
test01<- list()
test02<- list()
i<- 1
while (i <= 25){
    test01[[i]] <- c(data01[i,  ])
    test02[[i]] <- c(data02[i,  ])
    test[[i]]<- crossprod(test01[[i]],test02[[i]])
    i <- i+1
}
return(test)
}

result <- lapply(list.files(pattern='Train.*'),test)

次に、ループresultしてCSVファイルに保存します。

編集:保存方法:

files <- list.files(pattern='Train.*')
for (i in seq(length(result))) {
 write.csv(result[[i]], paste0('result_',files[i]), row.names = FALSE)
}

編集: 1 つのファイルに保存:

write.csv(do.call(rbind,result),'result.csv', row.names = FALSE) # Appending by row

また

write.csv(do.call(cbind,result),'result.csv', row.names = FALSE) # Appending by column
于 2013-02-25T16:18:12.753 に答える