【发布时间】:2021-08-03 06:55:15
【问题描述】:
我正在编写一个通过数据表显示数据的应用程序。因此,会读入来自用户的不同形式的文本文件。通常情况下,这些文件中的列顺序混淆,但其中的信息是有效的。 在显示数据后,我想做一些合理的例程,因此我想说:用“A 列”中的数据做 XY。但是如果有错误的数据(因为列的顺序错误),那么合理性就没有用了。因此,我想重新排序列名,例如:列号。 3 不是“A 列”而是包含“B 列”等数据。
我现在要做的是重新排序列名,而不是像 here 那样重新排序整个列。 使用以下代码,我可以移动整个列,但我如何仅移动列名?
编辑: 只是为了说明清楚:不,我不想在读取数据时对列进行排序。我想按原样读取文件,并只使用数据表对象。这主要是因为我不知道我得到什么样的文件以及里面有什么样的信息。所以我首先想展示里面有什么,然后再仔细看看。
library(shiny)
library(DT)
ui <- fluidPage(
DTOutput("table")
)
server <- function(input, output, session){
output$table <- renderDT({
datatable(
iris,
rownames = FALSE,
extensions = "ColReorder",
options = list(
colReorder = TRUE
),
colnames = c("S-Length", "S-Width", "P-Length", "P-Width", "Species")
)
})
}
shinyApp(ui, server)
【问题讨论】:
-
这是XY problem吗?为什么不只是在加载文本文件时重新排序列? (
dplyr::select会为你做这件事。) -
@Limey:不是,不是。我想首先查看“错误”顺序,然后重新排列 data.table(每次拖放)。
-
嗨@julien.leroux5 是的,这是可能的,感谢您的建议。几天前我已经看过这篇文章,但实际上我想避免这种情况:主要是因为许多不同的人正在使用该应用程序,我认为与“仅仅”移动它们相比,重命名列需要更长的时间。但如果没有人提出解决方案,我可能会重新考虑使用它。