0

我在让 R 读取文件夹中的一组文件并返回它们的叉积时遇到问题。

我有一个文件夹,其中包含一个 test.csv 文件和 n 个 train.csv 文件。

我需要一个循环来读取文件夹并返回一个包含测试叉积和每个训练文件的文件......所以文件的行应该看起来像这样。

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

我编写了一个脚本来为两个定义的行制作它,但不知道如何为整个文件夹和我需要的模式调整它。

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)
}

编辑:保存在一个文件中:

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 回答