【问题标题】:Change the column names of the data frame only for display purpose更改数据框的列名仅用于显示目的
【发布时间】:2020-05-21 14:12:21
【问题描述】:

有没有一种方法可以更改数据框的列标题名称,仅用于显示目的。例如

虹膜数据具有以下默认列

ini_col <- c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width" ,"Species")

如果我需要将其更改为新列下方。但只是显示目的。意思是,旧列的引用不应该消失。例如,我应该仍然能够执行 iris[["Species"]] 而不是 iris[["Category"]]

new_col <- c("Sep Len","Sep Wid","Pet Len","Pet Wid","Category")
head(iris)
         Sep Len     Sep Wid     Pet Len     Pet Wid Category 
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

我们实际上可以使用下面的代码 下面的代码1

mtcars2 <- 
  set_label(mtcars,
            am = "Automatic",
            mpg = "Miles per gallon",
            cyl = "Cylinders",
            qsec = "Quarter mile time")

但我有一个数据框,其中有旧列和新列。我们可以在上面的代码 1 中使用这个数据框吗

df
Old COl    new COl
am         Automatic
mpg    Miles per gallon
cyl       Cylinders
qsec   Quarter mile time

我们可以在执行 Code1 时使用这个数据框吗?

【问题讨论】:

  • 谢谢。但是旧的参考会改变吗?在 Shiny 应用程序的某个地方,我可以执行 iris[["Species"]]
  • 意思,新列只是显示目的而已
  • 嗨,也许这种方法可行? stackoverflow.com/a/51444998/7347699
  • labelVector 包看起来很有希望。我从未使用过它,而且由于您在 cmets 中谈论 Shiny,它可能在很大程度上取决于您用于显示数据的函数/包。
  • @GregorThomas 非常感谢。但是我有数据框形式的新列(请参阅已编辑的问题)。我们可以保留这个数据框并执行 setlabel 吗?

标签: r


【解决方案1】:

similar question 中链接时,knitr 包中的kable 可以轻松更改显示名称,而无需更改数据框:

knitr::kable(head(iris), 
             col.names = c("Speal length", "Speal Width",
"Petal Length", "Petal Width", "Species"))

【讨论】:

  • 谢谢。实际上我是在没有 kable 的情况下尝试的。已经构建了闪亮的应用程序。现在更难改变整个逻辑了。
  • 好的,没问题。值得在原始问题中包含此类详细信息(即您正在使用闪亮),以便人们可以提供正确的支持
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
相关资源
最近更新 更多