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

基本的には、ファイル名の末尾にファイル名が似ている2つのファイルを比較して計算し、その結果をファイルに書き込むことです。

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

これに関する重要な教訓の1つは、などの行に関するエラーメッセージが表示されるたびに、その行が発生しなかったError: could not find function "paste0"ことを意味するということです。コードを貼り付ける前にそのエラーを修正するか、修正するときにエラーについてお知らせください。そうでない場合は、行が機能していると見なされます。b.files <- paste0("Files_", a.files)

于 2012-09-19T00:48:08.390 に答える