0

我有如下脚本:

setwd ("I:/prep/Coord/RData/test")

#load .csv files
a.files <- grep("^Whirr", dir(), value=TRUE) #pattern matching
b.files <- paste0("Files_", a.files) 

for(i in length(a.files)){
    a <- read.table(a.files[i], header=T, sep=",", row.names=1) #read files start with     Whirr_
    b <- read.table(b.files[i], header=T, sep=",", row.names=1) #read files start with Files_
    a
    b

    cr <- as.matrix(a) %*% as.matrix(t(a)
    cr


    diag(cr)<-0
    cr

    #write to file
    write.csv(cr, paste0("CR_", a.files[i], ".csv"))
}

基本上,我想做的是比较两个文件名末尾有相似文件名的文件,并进行计算,并将结果写入文件。

当我尝试打印 a.files 和 b.files 时,输出对我来说似乎没问题。输出如下:

> a.files <- grep("^Whirr", dir(), value=TRUE) #pattern matching
> b.files <- paste0("Files_", a.files, sep="") 
Error: could not find function "paste0"
> a.files
[1] "Whirr_127.csv" "Whirr_128.csv"
> b.files
[1] "Files_ Whirr_127.csv" "Files_ Whirr_128.csv"
> 

我尝试为脚本提供多个文件,但收到如下错误消息:

Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file 'Files_ Whirr_128.csv': No such file or directory

所以,我尝试使用 file.choose,但它对我也不起作用。

感谢专家的帮助

4

1 回答 1

2

换行:

b.files <- paste0("Files_", a.files) 

至:

b.files <- paste("Files_", a.files, sep="")

您正在使用没有的 R 版本paste0(我看到在较早的答案中提供了代码)。这意味着您保留了 的早期版本b.files,也许是使用paste.

关于这一点的一个重要教训是,每当您收到有关某行的错误消息时,例如Error: could not find function "paste0",这意味着该行没有发生!您必须在粘贴代码之前修复该错误,或​​者在您粘贴代码时告诉我们该错误 - 否则我们假设该b.files <- paste0("Files_", a.files)行有效。

于 2012-09-19T00:48:08.390 回答