1

異なるデータ型の値をRのファイルに書き込むことは可能ですか?現在、私は次のような単純なベクトルを使用しています。

> vect = c (1,2, "string")
> vect
[1] "1"     "2"     "string"
> write.table(vect, file="/home/sampleuser/sample.txt", append= FALSE, sep= "|")

ただし、vectは文字列のベクトルであるため、ファイルを開くと、次の内容が引用符で囲まれた形式になります。

"x"
"1"|"1"
"2"|"2"
"3"|"string"

エントリのデータ型を復元して、文字列ではなく数値として扱うことはできません12?したがって、私の期待される結果は次のとおりです。

"x"
"1"|1
"2"|2
"3"|"string"

また、左側の値「1」、「2」、「3」はベクトルインデックスだと思いますか?最初の行が「x」であることがわかりませんでしたか?

4

2 に答える 2

1

出力ファイルからすべての引用符を削除するだけで問題が解決するのではないかと思います。それは簡単です:あなたの呼び出しに追加quote=FALSEしますwrite.table()

write.table(vect, file="/home/sampleuser/sample.txt", 
            append=FALSE, sep="|", quote=FALSE)

x
1|1
2|2
3|string

また、必要に応じて、列名と行名を削除することもできます。ただし、1列のテーブルがあるため、区切り文字は表示されません。

write.table(vect, file="/home/sampleuser/sample.txt", append=FALSE, sep="|",
            quote=FALSE, row.names=FALSE, col.names=FALSE)

1
2
string
于 2012-07-19T21:19:56.993 に答える
1

ベクトルと行列の場合、Rではすべてが同じデータ型である必要があります。デフォルトでは、Rはベクトル/行列内のすべてのデータを同じ形式に強制変換します。Rは、より具体的なタイプのデータをより具体的でないデータ型に強制変換します。この場合、ベクトルに格納されているアイテムはすべて「文字」タイプとして合理的に表すことができるため、そのデータ型に合うようにベクトルの数値部分を自動的に強制します。

@Dasonが言ったように、これがあなたが望むものでないなら、あなたはリストを使うほうがよいです。

または、data.frameを使用して、さまざまなデータ型をさまざまな列に格納できます(内部的には、Rはdata.framesをリストとして格納するため、これが別のオプションになることは理にかなっています)。

于 2012-07-19T20:43:55.007 に答える