3

我有一个带有数字列标签的矩阵,例如:

1,2,3
1,2,3
4,5,6
7,8,9

当我将这些数据加载到 R 中的变量中as.matrix(read.table("myfile", sep=",", header=TRUE)并打印生成的矩阵时,列标题前面已经加上 X,并且这个额外的字符出现在绘图等中:

     X1     X2     X3
[1,]  1      2      3
[2,]  4      5      6
[3,]  7      8      9

我怎样才能阻止这种行为?

4

1 回答 1

7

供应check.names=FALSEread.table.

请注意,当data.frames 具有诸如此类的非标准名称时,对其列的任何引用都必须用刻度线括起来,例如

my.df <- read.table(text='1,2,3
1,2,3
4,5,6
7,8,9', header=TRUE, sep=',', check.names=FALSE)

my.df$`1`
with(my.df, `1`)
attach(k)
`1`

此外,对 1 的调用transformtransform(my.df,使用其标准化形式 ( , , )=1:3)替换列名,因为使用其默认参数进行调用。X1X2X3transformdata.frame()

设置check.names=FALSE虽然在某些非常特殊的情况下很有用,但将允许重复的列名和非语法名称,这可能会在以后导致任何数量的问题。使用时要小心。

data.frame()默认情况下使用check.names=TRUE,因为在许多情况下,R 试图将数据框的列名解释为它们自己的变量;如果列名不是语法上有效的名称(请参阅 参考资料?make.names),或者如上所述受反引号保护,则在这些上下文中将发生错误。

于 2012-11-05T15:28:45.270 回答