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"

是否无法恢复条目的数据类型1并被2视为数值而不是字符串。所以我的预期结果是:

"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

此外,如果您愿意,您可以去掉列名和行名。但是现在您的分隔符没有出现,因为您有一个单列表。

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 回答