[英]R changing column names containing plus or brackets
我将data.frame
列名data.frame
到R
的变量中。 我的某些列名称包含加号+
。 R
将+
更改为.
将其保存到变量中时。 我想保留+
以便在需要时可以自动再次选择这些列。
这是我用来将列名保存到变量中的命令:
for (u in 1:50) {
k <- colnames[u]
f <- append(f,k)
}
## f is defined previously in my program
这是我用来重新获取所需名称的命令:
file2 <- file1[,f]
示例: column1+
被命名为column1.
在变量f
注意:括号()
和斜杠/
有什么想法可以解决这个问题吗?
只是这个问题仍然得到回答。 设置选项check.names
到FALSE
在阅读data.frame
使用read.table
为:
read.table(file, check.names = FALSE)
注意:正如@Roland在注释下所说,最好使列名保持整洁而不是使用此参数。 您可能还会遇到某些功能会自动将名称转换回原来的情况。 例如,
df <- data.frame('x+y' = 1:4, 'a+b' = 5:8, check.names = FALSE)
> df
# x+y a+b
# 1 1 5
# 2 2 6
# 3 3 7
# 4 4 8
# Now adding a 3rd column, using `transform`
transform(df, c=9:12)
# x.y a.b c # note that it reverts back
# 1 1 5 9
# 2 2 6 10
# 3 3 7 11
# 4 4 8 12
transform(df, c=9:12, check.names = FALSE)
# x+y a+b
# 1 1 5
# 2 2 6
# 3 3 7
# 4 4 8
您必须知道所有具有check.names=FALSE
函数,并记住正确使用它们。 这是我至少想到的一个问题。 使列没有冲突会更好。
在列名中包括+
运算符也会干扰公式模型接口:
dat <- data.frame('a+x'=c(1,2,3,4),b=c(2,4,6,8),check.names=FALSE)
lm(dat$b~dat$a+x)
Error in eval(expr, envir, enclos) : object 'x' not found
您将需要使用lm(dat$b~dat[,'a+x'])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.