Bra*_*sen 31 r names illegal-characters dataframe
假设我有一个data.frame,就像这样:
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
Run Code Online (Sandbox Code Playgroud)
头(DF,3)
收益:
Label.1 Label.2
1 1 1.9825458
2 2 -0.4515584
3 3 0.6397516
Run Code Online (Sandbox Code Playgroud)
如何让R停止使用列名称中的句点自动替换空格?即,"标签1"而不是"Label.1".
Bra*_*sen 64
你可以设置check.names = FALSE
在data.frame
(以及在read.table
):
df <- data.frame("Label 1" = 1:3, "Label 2" = rnorm(3), check.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
收益:
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
Run Code Online (Sandbox Code Playgroud)
来自?data.frame
:
check.names
逻辑.如果TRUE
那么检查数据框中变量的名称,以确保它们在语法上是有效的变量名,并且不会重复.如果有必要,他们会调整(按make.names
)它们.
来自?make.names
:
语法上有效的名称由字母,数字和点或下划线字符组成,并以字母或点开头,后面没有数字.诸如".2way"之类的名称无效,保留字也不是.
所有无效字符都被翻译为"
.
"
此外,如果您需要使用"无效"名称对变量进行子集化,则$
可以使用反引号`
.例如:
df$`Label 1`
Run Code Online (Sandbox Code Playgroud)
你没有.
使用您想要的空间格式将无法满足您使用时出现的标识符的要求df$column.1
- 这无法应对空间.所以请参阅make.names()
函数以获取详细信息或示例:
> make.names(c("Foo Bar", "tic tac"))
[1] "Foo.Bar" "tic.tac"
>
Run Code Online (Sandbox Code Playgroud)
您可以更改现有数据框名称以包含空格,即使用您的示例
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
colnames(df) <- c("Label 1", "Label 2")
head(df, 3)
Run Code Online (Sandbox Code Playgroud)
回报
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
Run Code Online (Sandbox Code Playgroud)
你仍然可以使用$运算符访问列,你只需要使用双引号,例如
df$"Label 2"[1:3]
Run Code Online (Sandbox Code Playgroud)
回报
[1] 0.2013347 1.8823111 -0.5233811
Run Code Online (Sandbox Code Playgroud)
在创建data.frame时自动转换列名似乎相当不一致,但在列名更改期间不要执行相同的操作,但这就是R当前如何工作.
归档时间: |
|
查看次数: |
29986 次 |
最近记录: |