15

「data.txt」というファイルに次のデータがあります。

pid      1     2     4     15      18       20
1_at   100   200   89    189     299      788
2_at     8    78   33     89      90       99
3_xt   300    45   53    234      89       34
4_dx    49    34   88      8       9       15

データはタブで区切られています。

「vector.csv」という csv ファイルの情報に基づいて、そのテーブルのいくつかの列を抽出したかったのですが、このベクターは次のデータを取得しました。

18,1,4,20

したがって、次のようなタブで区切られた変更されたファイル「datamod.txt」で終了したかったのです。

pid      18       1     4      20
1_at   299     100    89     788
2_at    90       8    33      99
3_xt    89     300    53      34
4_dx     9      49    88      15

いくつかの助けを借りて、次のコードを作成しました。

fileName="vector.csv"
con=file(fileName,open="r")
controlfile<-readLines(con)
controls<-controlfile[1]
controlins<-controlfile[2]
test<-paste("pid",controlins,sep=",")
test2<-c(strsplit(test,","))
test3<-c(do.call("rbind",test2)) 
df<-read.table("data.txt",header=T,check.names=F)
CC <- sapply(df, class)
CC[!names(CC) %in% test3] <- "NULL"
df <- read.table("data.txt", header=T, colClasses=CC,check.names=F)
df<-df[,test3]
write.table(df,"datamod.txt",row.names=FALSE,sep="\t")

私が得た問題は、結果のファイルが次の形式になっていることです。

"pid"      "18"       "1"     "4"      "20"
"1_at"   299         100      89       788
"2_at"    90           8      33        99
"3_xt"    89         300      53        34
"4_dx"     9          49      88        15

私が抱えている問題は、保存したファイルに表示される引用符 "" マークを回避して、データが希望どおりに表示されるようにする方法です。

何か助けはありますか?

ありがとう

4

1 に答える 1

53

のヘルプファイルから引用するにはwrite.table

quote

論理値 (TRUE または FALSE) または数値ベクトル。TRUE の場合、文字列または係数列は二重引用符で囲まれます。数値ベクトルの場合、その要素は引用する列のインデックスとして取得されます。どちらの場合も、行名と列名が記述されている場合は引用符で囲みます。FALSE の場合、何も引用されません。

したがって

write.table(df,"datamod.txt",row.names=FALSE,sep="\t", quote = FALSE)

うまく動作するはずです。

于 2013-02-13T04:59:12.947 に答える