【发布时间】:2016-04-29 11:02:09
【问题描述】:
我有一个小应用程序,它列出了客户、商品和销售情况。我想从表中生成一个查找列表,但如果我尝试使用 keyby 对列表进行排序,则会得到两列。这可能很简单,但我很困惑。下面的代码......
library(data.table)
company=c("A","S","W","L","T","T","W","A","T","W")
item=c("Thingy","Thingy","Widget","Thingy","Grommit","Thingy","Grommit","Thingy","Widget","Thingy")
sales=c(120,140,160,180,200,120,140,160,180,200)
salesdt<-data.table(company,item,sales)
server <- function(input, output) {
output$theCustomersList <- renderUI({
list(
selectInput("customer", "Choose a customer:",
choices = salesdt[,unique(company), keyby=company]
,selectize=FALSE
,selected="A"
)
)
})
output$result <- renderTable(
salesdt[company%in%c(input$customer),
.(valuesold=sum(sales)), item
]
)
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("theCustomersList")
),
mainPanel(tableOutput('result'))
)
)
shinyApp(ui = ui, server = server)
澄清一下……我的问题是我该如何改变
salesdt[,unique(company), keyby=company]
得到一列但已排序。
【问题讨论】:
-
我不确定您的问题到底是什么。也许只使用
choices = unique(company)? -
该公司在 data.table 中被引用.....在现实世界中,我正在导入的 CSV 中有 40k 行,我需要从那里获得唯一列表。
-
你问为什么你得到两列,
salesdt[,unique(company), keyby=company]正在生成两列。所以你必须改变这一行。 -
是的,我明白....抱歉,如果我没有说清楚。我的问题是如何更改它以获得一列但有序...如果我省略 keyby 我得到一列但它不是无序的。
标签: r shiny data.table