使用字符串col名称调用带有data.frames的qplot

使用字符串col名称调用带有data.frames的qplot,r,ggplot2,R,Ggplot2,我创建了一个data.frame,其中包含: d <- data.frame("name 1"=1, "name 2"=2) d您可以使用反勾号将字符串转换为符号: qplot(`name 1`, `name 2`, data=d) 很高兴听到这个消息;) 您可以使用反勾号将字符串转换为符号: qplot(`name 1`, `name 2`, data=d) 很高兴听到这个消息;) 这里有两个问题: 如何使用非标准但语法有效的组件名称,以及 R在为数据帧创建名称组件时所做的操作 我

我创建了一个data.frame,其中包含:

d <- data.frame("name 1"=1, "name 2"=2)

d您可以使用反勾号将字符串转换为符号:

qplot(`name 1`, `name 2`, data=d)

很高兴听到这个消息;)

您可以使用反勾号将字符串转换为符号:

qplot(`name 1`, `name 2`, data=d)

很高兴听到这个消息;)

这里有两个问题:

  • 如何使用非标准但语法有效的组件名称,以及
  • R在为数据帧创建名称组件时所做的操作
  • 我将按相反的顺序拿这些

    使用
    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.
    
    这意味着,对于OPs
    d
    ,使用

    d <- data.frame("name 1" = 1, "name 2" = 2)
    
    这种行为可以通过以下方式抑制:

    > names(data.frame("name 1" = 1, "name 2" = 2, check.names = FALSE))
    [1] "name 1" "name 2"
    
    默认行为意味着我们可以像

    > d$name.1
    [1] 1
    

    但是,如果您想在输入名称时使用空格,该怎么办?显然,它们不像以前那样工作:

    > 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"
    

    但是,在
    qplot()
    示例中,引用的组件名称不能按预期工作。绘图是在字符值
    “name 1”
    “name 2”
    处绘制的,而不是这些变量的值,
    1
    2
    这里有两个问题:

  • 如何使用非标准但语法有效的组件名称,以及
  • R在为数据帧创建名称组件时所做的操作
  • 我将按相反的顺序拿这些

    使用
    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.
    
    这意味着,对于OPs
    d
    ,使用

    d <- data.frame("name 1" = 1, "name 2" = 2)
    
    这种行为可以通过以下方式抑制:

    > names(data.frame("name 1" = 1, "name 2" = 2, check.names = FALSE))
    [1] "name 1" "name 2"
    
    默认行为意味着我们可以像

    > d$name.1
    [1] 1
    

    但是,如果您想在输入名称时使用空格,该怎么办?显然,它们不像以前那样工作:

    > 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"
    

    但是,在
    qplot()
    示例中,引用的组件名称不能按预期工作。绘图是在字符值
    “name 1”
    “name 2”
    处绘制的,而不是那些变量的值,
    1
    2

    当我运行代码时,R将空格替换为“.”。试试qplot(name.1,name.2,data=d)——这样行吗?嗯。。这对我来说很有效——也许你有不同的选择。如果列名中确实有空格,您可以使用反勾号将字符串转换为符号:qplot(`name 1`、`name 2`、data=d)您能更具体地说明它是如何工作的吗?错误消息?意外输出?谢谢,欧文。您可以发布一个答案:)当我运行代码时,R将空格替换为“.”。试试qplot(name.1,name.2,data=d)——这样行吗?嗯。。这对我来说很有效——也许你有不同的选择。如果列名中确实有空格,您可以使用反勾号将字符串转换为符号:qplot(`name 1`、`name 2`、data=d)您能更具体地说明它是如何工作的吗?错误消息?意外输出?谢谢,欧文。你可以发布一个答案:)@hadley Oops,你是对的,情节略有不同。我将删除那个部分。@hadley Oops,你说得对,情节略有不同。我将删除该位。