是否可以将不同数据类型的值写入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"
是否无法恢复被视为数值而非字符串的条目1
和2
的数据类型。所以我的预期结果是:
"x"
"1"|1
"2"|2
"3"|"string"
另外,我假设左侧值“1”,“2”和“3”是矢量索引?我不明白第一行怎么是“x”?
答案 0 :(得分:1)
对于向量和矩阵,R要求所有内容具有相同的数据类型。默认情况下,R会将矢量/矩阵中的所有数据强制转换为相同的格式。 R将更具体的数据类型强制转换为不太具体的数据类型。在这种情况下,矢量中存储的任何项都可以合理地表示为“字符”类型,因此它会自动强制向量的数字部分以适合该数据类型。
正如@Dason所说,如果这不是你想要的,你最好使用一个列表。
或者,您可以使用data.frame,它允许您将不同的数据类型存储在不同的列中(在内部,R将data.frames存储为列表,因此这将是另一种选择)。
答案 1 :(得分: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
此外,如果您愿意,可以删除列名和行名。但是现在你的分隔符没有出现,因为你有一个单列表。
write.table(vect, file="/home/sampleuser/sample.txt", append=FALSE, sep="|",
quote=FALSE, row.names=FALSE, col.names=FALSE)
1
2
string