1

ループで作成した R を使用して、csv ファイルに 2 行を追加しようとしています。まず、file1.csv、file2.csv などの名前の多数のファイルから始めます。各ファイルには 2 つの座標列が含まれています。次に、これらをインデックス マトリックスとして使用して、インデックス ファイルのエントリに「2」がリストされ、それ以外の場合は「0」がリストされた新しい csv ファイルを作成します。結果のファイルが次のようになるように、ファイルにヘッダーを追加します。

"","1","2","3","4","5"
"1",0,0,0,0,0
"2",0,0,0,0,2

これはまさに私が必要としているものです (私のコードは以下にあります)。ただし、次のようになるように、ヘッダーの前にある「最小 1」と「最大 3」をそれぞれ読み取る csv ファイルの先頭に 2 行を追加する必要もあります。

"min 1",,,,
"max 3",,,,
"","1","2","3","4","5"
"1",0,0,0,0,0
"2",0,0,0,0,2

M マトリックスに行を追加し、rbinding、2 つの csv をマージし、csv ファイルを読み込んで行を追加しようとしましたが、うまくいきません。アドバイスをいただければ幸いです (また、非常に洗練されていないと確信している既存のコードを改善することもできます)。

ありがとうございました

 csvdat <- list.files(pattern='file.*.csv')
 for (i in seq_along(csvdat)){
data <- read.csv(csvdat[i])
data[,2] -> x
data[,3] -> y
index=cbind(x,y)   
a <- length(x)+1    
matrix(nrow=a,ncol=a) -> M
M[] <- 0
M[index] <- 2
Cn <- c(1:a)
colnames(M) <- Cn
file <- as.character(paste("matrix", i, ".csv", sep=""))
write.csv(M, file,col.names=TRUE)
}
4

1 に答える 1

1

これは、「解決しようとしている問題は何ですか?」という典型的なケースです。出力ファイルで何をしているのか、なぜこのような奇妙な構成に制限されているのかを説明すると、おそらく、この特定の csv ファイルを生成するだけでなく、最終的な目的の結果を達成するためのより良い方法を誰かが説明できるでしょう。

とはいえ、一般に、writeまたはwrite.csvを使用して「最小 1、最小 3」文字列をファイルに送信し、続いてwrite.csv(data,{other arguments},append=TRUE)データのマトリックスを文字列の下に配置できます。

于 2012-06-07T11:26:20.940 に答える