繁体   English   中英

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

[英]Print data.frame with column names with spaces

我的 dataframe 看起来像这样:

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 ?

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

到 select 一个特定的列,列名传入""或``

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

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

即使直接打印时它在变量名周围有刻度,但它不会在其他打印情况下(如绘图或表格)出现。

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

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

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)

就在打印之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM