我创建了一个data.frame:
d <- data.frame("name 1"=1, "name 2"=2)
由于显而易见的原因,调用qplot("name 1", "name 2", data=d)
不起作用。是否可以使用某种机制使其工作?我已经尝试了as.name
,但这也行不通。
答案 0 :(得分:4)
这里有两个问题:
我会以相反的顺序拍摄。
使用data.frame()
创建数据框时,默认设置是检查组件的名称是否有效。来自?data.frame
我们有:
check.names: logical. If ‘TRUE’ then the names of the variables in the
data frame are checked to ensure that they are syntactically
valid variable names and are not duplicated. If necessary
they are adjusted (by ‘make.names’) so that they are.
对于使用
创建的OPd
,这意味着什么
d <- data.frame("name 1" = 1, "name 2" = 2)
会有这些名字:
> names(d)
[1] "name.1" "name.2"
可以通过
来抑制此行为> names(data.frame("name 1" = 1, "name 2" = 2, check.names = FALSE))
[1] "name 1" "name 2"
默认行为意味着我们可以执行
之类的操作> d$name.1
[1] 1
或
> qplot(name.1, name.2, data=d)
但是,如果您想要输入名称,并使用空格,该怎么办?显然他们不像以前那样工作:
> d <- data.frame("name 1" = 1, "name 2" = 2, check.names = FALSE)
> d
name 1 name 2
1 1 2
> d$name 1
Error: unexpected numeric constant in "d$name 1"
非标准的,语法上有效的名称在使用时需要引用,使用反引号`foo`
或正常引号"foo"
,'foo'
,例如。
> d$`name 1`
[1] 1
> d$"name 1"
[1] 1
> d$'name 1'
但是,在qplot()
示例中,引用的组件名称无法按预期工作。该图是根据"name 1"
和"name 2"
的字符值绘制的,而不是1
和2
的值。
答案 1 :(得分:2)
您可以使用反引号将字符串转换为符号:
qplot(`name 1`, `name 2`, data=d)
很高兴听到这种方法有效;)