【问题标题】:r data.frame not display valuer data.frame 不显示值
【发布时间】:2020-12-08 16:28:51
【问题描述】:

数据查看器的最后一列不可见,也无法访问。我正在使用 moonsun 包,其中 planets() 函数返回 data.frame。最后一列将显示数值+文本(“NA Leo”)。如果我们打印变量的值,它将在输出窗口中显示“Leo”文本。但是当我们从数据框查看器中观察值时,它不会显示。此外,如果我们打印 planets$mag,那么它也不会显示最后一个文本列。

library(moonsun)
    
planets()
# Print following output
# ra             d phase  angle  dist size  mag    
# 2020-08-19-Sun      9h 54m 45s  12* 41' 55''    NA     NA  1.01  0.5   NA Leo
# 2020-08-19-Moon     9h 48m 30s  13* 19' 31''   0.0  112.2  0.97 32.0   NA Leo
# 2020-08-19-Mercury  9h 58m 12s  14* 16'  7'' 100.0 -151.9  1.36  5.0 -2.0 Leo
        

当存储到变量时,它不会存储例如“Leo”最后一列,但在打印 var 值时它将显示在输出中

var=planets()

【问题讨论】:

    标签: r dataframe variables type-conversion


    【解决方案1】:

    这个包在 CRAN 上不再有效,所以我必须从存档安装最新版本。问题是从函数planets() 返回的对象不是一个普通的数据框。它是一种称为“eqc”的 S3 对象,它基本上只是一个带有修改后的打印方法的数据框,在打印时添加了一个未命名的最终列。

    planet_df <- planets()
    
    planet_df
    #>                             ra             d phase  angle  dist size  mag
    #> 2020-08-19-Sun      9h 54m 45s  12* 41' 55''    NA     NA  1.01  0.5   NA Leo
    #> 2020-08-19-Moon     9h 48m 30s  13* 19' 31''   0.0  112.2  0.97 32.0   NA Leo
    #> 2020-08-19-Mercury  9h 58m 12s  14* 16'  7'' 100.0 -151.9  1.36  5.0 -2.0 Leo
    #> 2020-08-19-Venus    6h 44m 23s  20*  8' 37''  53.1   91.6  0.75 22.6 -5.0 Gem
    #> 2020-08-19-Mars     1h 34m 19s   5* 19' 33''  89.3   71.2  0.55 17.0 -2.0 Psc
    #> 2020-08-19-Jupiter 19h 18m  7s -23* 22' 35''  99.6  -98.1  4.31 45.6 -2.7 Sgr
    #> 2020-08-19-Saturn  19h 51m 45s -22* 47' 10''  99.9 -101.2  9.14 18.1  0.9 Sgr
    #> 2020-08-19-Uranus   2h 35m 15s  14* 43' 22''  99.9   72.1 19.54  3.4  5.8 Ari
    #> 2020-08-19-Neptune 23h 21m 47s  -6* 41' 43'' 100.0   69.5 29.04  2.1  7.8 Aqr
    #> 2020-08-19-Pluto   19h  0m 14s -22* 50' 46'' 100.0  -94.2 32.24  0.3 14.1 Sgr
    
    class(planet_df)
    #> [1] "eqc"        "apos"       "data.frame"
    

    当您查看“eqc”的print 方法时,您可以看到它所做的只是在数据框上调用constel 函数并将其作为未命名列粘贴:

    print.eqc
    #> function (x, ...) 
    #> {
    #>     x$" " = constel(x)
    #>     print.data.frame(x)
    #> }
    #> <bytecode: 0x0f572b08>
    #> <environment: namespace:moonsun> 
    

    因此,如果您希望这只是一个标准数据框,您可以这样做:

    planet_df <- as.data.frame(planet_df)
    planet_df$cons <- constel(planet_df)
    planet_df
    #>                             ra             d phase  angle  dist size  mag  cons
    #> 2020-08-19-Sun      9h 54m 45s  12* 41' 55''    NA     NA  1.01  0.5   NA   Leo
    #> 2020-08-19-Moon     9h 48m 30s  13* 19' 31''   0.0  112.2  0.97 32.0   NA   Leo
    #> 2020-08-19-Mercury  9h 58m 12s  14* 16'  7'' 100.0 -151.9  1.36  5.0 -2.0   Leo
    #> 2020-08-19-Venus    6h 44m 23s  20*  8' 37''  53.1   91.6  0.75 22.6 -5.0   Gem
    #> 2020-08-19-Mars     1h 34m 19s   5* 19' 33''  89.3   71.2  0.55 17.0 -2.0   Psc
    #> 2020-08-19-Jupiter 19h 18m  7s -23* 22' 35''  99.6  -98.1  4.31 45.6 -2.7   Sgr
    #> 2020-08-19-Saturn  19h 51m 45s -22* 47' 10''  99.9 -101.2  9.14 18.1  0.9   Sgr
    #> 2020-08-19-Uranus   2h 35m 15s  14* 43' 22''  99.9   72.1 19.54  3.4  5.8   Ari
    #> 2020-08-19-Neptune 23h 21m 47s  -6* 41' 43'' 100.0   69.5 29.04  2.1  7.8   Aqr
    #> 2020-08-19-Pluto   19h  0m 14s -22* 50' 46'' 100.0  -94.2 32.24  0.3 14.1   Sgr
    
    class(planet_df)
    #> [1] "data.frame"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-14
      • 2018-01-05
      • 2017-09-16
      • 2013-06-01
      • 2016-11-25
      • 2020-01-24
      相关资源
      最近更新 更多