用列名打印带空格的data.frame

时间:2019-11-14 12:17:36

标签: r

我的数据框如下:

sum <- data.frame(
    "default LS" = rnorm(3),
    "fit LS" = rnorm(3), 
    "gradient dMNLL/dLS" = rnorm(3)
)

现在,由于语法原因,空格已转换为.(点):

  default.LS      fit.LS gradient.dMNLL.dLS
1  0.1157615  0.06711939          1.5897061
2  1.1819154  1.11368192         -0.1730422
3  0.1531863 -0.63845188          0.6946397

我不在乎代码,但出于演示目的,我想在其上打印空格。

有没有一种方法来打印带空格的data.frame?

是否可以使用自定义列名称打印data.frame?

3 个答案:

答案 0 :(得分:0)

sum <- data.frame(
  "default LS" = rnorm(3),
  "fit LS" = rnorm(3), 
  "gradient dMNLL/dLS" = rnorm(3)
)
names(sum)<- gsub("\\."," ", make.names(names(sum), unique = T))
sum
#>   default LS     fit LS gradient dMNLL dLS
#> 1 -0.7607631 -0.6488190         -2.1846567
#> 2  1.3633617 -0.1891804          1.0127126
#> 3  0.1476440  0.6775571         -0.7808632
sum[["default LS"]]
#> [1] -0.7607631  1.3633617  0.1476440

要选择特定的列,请在""或``

中传递列名

答案 1 :(得分:0)

您还可以使用tidyverse包中的小对象。

 library(tibble)
 data <- tibble("Variable with space"=letters)
 data

即使直接打印时变量名周围有打勾号,它也不会在其他打印情况下(例如绘图或表格)停留在该位置。

答案 2 :(得分:0)

也将@Roland提到的解决方案发布给其他人作为答案:

在创建check.names = FALSE时使用data.frame

sum <- data.frame(
    "default LS" = rnorm(3),
    "fit LS" = rnorm(3), 
    "gradient dMNLL/dLS" = rnorm(3),
    check.names = FALSE
)

但这使处理此data.frame变得麻烦,因为您需要使用sum$"fit LS"之类的语法。最好做:

names(sum) <- gsub(".", " ", names(sum), fixed = TRUE)

在打印之前。