【问题标题】:loop for applying script to sub-folders and name results accordingly --R循环将脚本应用于子文件夹并相应地命名结果--R
【发布时间】:2013-02-26 17:14:31
【问题描述】:

我有一个脚本可以针对一个文件夹中的任何现有 train .csv 文件获取 test-results.csv 文件的 corssproduct

已编辑 -- 添加了一些更正

mytest <- function(data) {
data01 <- as.matrix(read.csv(file = "test/test-results.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(mytest)
}
result <- lapply(list.files(pattern='^tain.*\\.csv', recursive=TRUE, full.names = TRUE),test)
for (i in seq(length(result))) {
 write.csv(do.call(cbind,result),'result.csv', row.names = FALSE) 
}

我有几个相同结构的文件夹

Main|experiment 01|test|test-results.csv, train01.csv, train02.csv, train03.csv
Main|experiment 02|test|test-results.csv, train01.csv, train02.csv

如果可能,我现在想创建一个脚本,将相同的脚本应用到所有这些文件夹并返回结果(例如 results-experiment01.csv),而不是应用 100 次

对不起,如果这看起来很糟糕...... R 中的新内容

【问题讨论】:

    标签: r loops path subdirectory


    【解决方案1】:

    假设用recursive = TRUE 调用简单的dirlist.files,你会得到一个文件列表作为字符向量(如下例中的dirlist

    > dirlist
    [1] "Main/experiment 01/test/a.csv"  "Main/experiment 02/test/b.csv"  "Main/experiment 02/test/d.txt"  "Main/experiment 02/dummy/a.csv"
    [5] "temp1.csv"                      "Main/temp2.csv"  
    

    您可以使用以下正则表达式对该向量进行子集化

    > csvfiles <- dirlist[grepl('.*(experiment [0-9]+)/test/.*\\.csv', dirlist)]
    > csvfiles
    [1] "Main/experiment 01/test/a.csv" "Main/experiment 02/test/b.csv"
    

    然后您可以在此再次使用正则表达式获取结果名称。

    > resultsnames <-  paste('result_', gsub('.*(experiment [0-9]+)/test/.*\\.csv','\\1', csvfiles), sep="")
    > resultsnames
    [1] "result_experiment 01" "result_experiment 02"
    

    【讨论】:

    • @V-V 你想在这里实现什么?您的代码充满了错误。 test 是什么? files 列表是为了什么而创建的?你想在循环内做什么?
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2020-02-05
    相关资源
    最近更新 更多