【问题标题】:error subsetting data frame for plot purposes in RR中用于绘图目的的错误子集数据框
【发布时间】:2020-08-31 02:21:40
【问题描述】:

我有一个无法重现的数据框,并且 [col1,col2,...] 列是数值。 当我尝试绘制其中一列时:

hist(df[,"col1"])

我收到以下错误:

Error in hist.default(df[, var]) : 'x' must be numeric*  

但我可以像这样子集数据框时绘制它:

hist(df$col1]

绘制箱线图时不会发生这种情况

【问题讨论】:

    标签: r subset histogram


    【解决方案1】:

    很可能你的df 不是数据框,而是一个小标题。

    当您使用一列对数据框进行子集化时,您会得到一个向量。

    mtcars[, 'mpg']
    [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
    [17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
    

    这适用于hist

    hist(mtcars[,"mpg"])
    

    和做的一样

    hist(mtcars$mpg)
    

    但是如果你有一个 tibble,用一列子集 tibble 返回一个 tibble。

    df <- tibble::tibble(mtcars)
    df[,"mpg"]
    
    # A tibble: 32 x 1
    #     mpg
    #   <dbl>
    # 1  21  
    # 2  21  
    # 3  22.8
    # 4  21.4
    # 5  18.7
    # 6  18.1
    # 7  14.3
    # 8  24.4
    # 9  22.8
    #10  19.2
    # … with 22 more rows
    

    所以你得到了错误:

    hist(df[,"mpg"])
    

    hist.default(df[, "mpg"]) 中的错误:'x' 必须是数字

    在这种情况下,您应该使用[[ 来获取向量/

    hist(df[["mpg"]])
    

    【讨论】:

    • > class(df) [1] "tbl_df" "tbl" "data.frame"
    • 它使用双括号 [[]] 给了我这个错误:错误:[[ 中的小标题不能缺少下标。
    • 但将数据帧转换回数据帧效果很好。欣赏
    【解决方案2】:

    如果是tibble,我们也可以使用$

    hist(df$mpg)
    

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多