R:如何使用flextable()包固定表格的列宽?

6rqinv9w  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(133)

我有两个表。他们两个的第一列应该有固定的宽度,比如说,1,5英寸。下面有一个示例脚本,其中名为df1的表我使用了flextable()函数,名为df2的表我使用了flextable()和width()函数。然而,所需列的宽度没有固定到给定的长度,即1,5英寸。
有人能告诉我如何修复列宽吗?

library(shinydashboard)
library(shiny)
library(rhandsontable)
library(flextable)

df1 = data.table(
    "Сolumn1"= as.character(),
    "Column2"= as.numeric(),
    "Сolumn3"= as.character()
)

flextable(
  df1,
  col_keys = names(df1),
  cwidth = 0.75,
  cheight = 0.25
)

qflextable(df1)

df2 = data.table(
    "Сolumn1"= as.character(),
    "Column2"= as.numeric(),
    "Сolumn3"= as.character()
)

df2 <- flextable(head(df2))
df2 <- width(df2, width = 1.5)

ui <- dashboardPage(
  dashboardHeader(title = "Assets"),
  dashboardSidebar(
    menuItem("Home", tabName = "home"),
    menuItem("Current assets",
      tabName = "CurrentAssets",
      menuSubItem("Inventory", tabName = "inventory")
      )
    ),
  dashboardBody(
    tabItems(
      tabItem(
        tabName = "inventory",
        column(
          width = 7,
          "df1",
          rHandsontableOutput("Table1")  
        ),
        column(
          width = 7,
          "df2",
          rHandsontableOutput("Table2")
        )
      )
    )
  )
)

server <- function(input, output, session) {
  output$Table1 <- renderRHandsontable({
     rhandsontable(df1, stretcH="all")
  })

  output$Table2 <- renderRHandsontable({
     rhandsontable(df2, stretcH="all")
  })
}

shinyApp(ui, server)

字符串

3yhwsihp

3yhwsihp1#

我不太清楚你想用flextable实现什么。当你将flextable对象传递给rhandsontable时,你的代码返回一个错误。你只能有两个。你可以使用flextablerhandsontable创建你的表。但是不可能先创建一个具有固定列宽的flextable,然后再转换它如果你想要后者,那么你必须使用rhandsontable包提供的选项来设置列宽。
从调整rhandsontable大小的文档中,您可以使用hot_cols()colWidths=参数设置列宽。此外,rhandsontable()有一个参数rowHeaderWidth来设置行名称列的宽度。
下面我将rowHeaderWidth设置为200,并使用数字向量将第一列的宽度设置为100,将第二列和第三列的宽度设置为50。
注意事项:对于列布局,您总共只有12列,即当您希望两个表都在一行中时,将两个表的列宽设置为7将不起作用。因此,我将两个表的宽度设置为6。

library(shinydashboard)
library(shiny)
library(rhandsontable)

df1 <- data.frame(
  "Сolumn1" = as.character(),
  "Column2" = as.numeric(),
  "Сolumn3" = as.character()
)

df2 <- data.frame(
  "Сolumn1" = as.character(),
  "Column2" = as.numeric(),
  "Сolumn3" = as.character()
)

ui <- dashboardPage(
  dashboardHeader(title = "Assets"),
  dashboardSidebar(
    menuItem("Home", tabName = "home"),
    menuItem("Current assets",
      tabName = "CurrentAssets",
      menuSubItem("Inventory", tabName = "inventory")
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(
        tabName = "inventory",
        column(
          width = 6,
          "df1",
          rHandsontableOutput("Table1")
        ),
        column(
          width = 6,
          "df2",
          rHandsontableOutput("Table2")
        )
      )
    )
  )
)

server <- function(input, output, session) {
  output$Table1 <- renderRHandsontable({
    rhandsontable(df1, stretch = "all", rowHeaderWidth = 200) |> 
      hot_cols(colWidths = c(100, 50, 50))
  })

  output$Table2 <- renderRHandsontable({
    rhandsontable(df2, stretch = "all", rowHeaderWidth = 200) |> 
      hot_cols(colWidths = c(100, 50, 50))
  })
}

shinyApp(ui, server)

字符串


的数据

相关问题