我有一个带有数字列标签的矩阵,例如:
1,2,3
1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)
当我将这些数据加载到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
Run Code Online (Sandbox Code Playgroud)
我怎么能阻止这种行为?
供应check.names=FALSE到read.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`
Run Code Online (Sandbox Code Playgroud)
此外,调用transform,如transform(my.df,1 =1:3),将其标准化的形式(取代列名X1,X2,X3),因为transform调用data.frame()其默认参数.
设置check.names=FALSE虽然在某些非常特殊的情况下很有用,但允许重复的列名和非语法名称,这可能会在以后引起任何数量的问题.使用时要小心.
data.frame()check.names=TRUE默认情况下使用,因为在许多上下文中R尝试将数据框的列名解释为它们自己的变量; 如果列名称不是语法上有效的名称(请参阅参考资料?make.names),或者如上所述使用反向标记进行保护,则会在这些上下文中发生错误.