在我的shiny应用我使用datatable功能从DT库来构建一个表,要对齐的中心柱.我可以使用,formatStyle('column', textAlign = 'center')但它只影响列体而不影响标题.
我很惊讶地发现,clara从library(cluster)允许来港定居.但是函数文档没有说明它如何处理这些值.
所以我的问题是:
clara处理NAs?kmeans(不允许使用Nas)吗?[更新]所以我确实在clara函数中找到了代码行:
inax <- is.na(x)
valmisdat <- 1.1 * max(abs(range(x, na.rm = TRUE)))
x[inax] <- valmisdat
Run Code Online (Sandbox Code Playgroud)
哪个缺少价值替代valmisdat.不确定我理解使用这种配方的原因.有任何想法吗?是否更自然地分别对每个列处理NAs,可能用均值/中位数替换?
我有一个shiny应用程序,我想在开始时ggplot使用a brush,因此用户无需在每次应用程序启动时选择某个感兴趣的区域.当然后来用户可以选择不同的区域.这是一个开头的例子:
library(shiny)
library(ggplot2)
runApp(shinyApp(
ui = fluidPage(plotOutput('plotA', brush = brushOpts(id = 'plotA_brush')),
plotOutput('plotZ')),
server = function(input, output, session) {
pollData <- reactivePoll(60 * 1000, session,
checkFunc = function(){ Sys.time() },
valueFunc = function(){ data.frame(x = 1:100, y = cumsum(rnorm(100)))})
output$plotA <- renderPlot({
dt <- pollData()
ggplot(dt, aes(x, y)) + geom_line()
})
ranges <- reactiveValues(x = NULL, y = NULL)
observe({
brush <- input$plotA_brush
if(!is.null(brush)) {
ranges$x <- c(brush$xmin, brush$xmax)
ranges$y <- c(brush$ymin, brush$ymax)
} …Run Code Online (Sandbox Code Playgroud) 最近我遇到了data.table包裹.我仍然不确定如何进行行方式矩阵运算.它原本打算处理此类操作吗?例如,data.table等同于apply(M,1,fun)什么?
fun应该采取的向量作为参数,例如mean,median,或mad.
我知道有很多相关的问题,我已经阅读了它们,但仍然没有对如何读取 - 处理 - 写入有一些基本的了解.以下功能为例,它使用clojure-csv库来解析一行
(defn take-csv
"Takes file name and reads data."
[fname]
(with-open [file (reader fname)]
(doseq [line (line-seq file)]
(let [record (parse-csv line)]))))
Run Code Online (Sandbox Code Playgroud)
我想要获得的是将数据读入某些集合,(def data (take-csv "file.csv"))然后再处理它.所以基本上我的问题是如何返回record或更确切地说是记录列表.
以下是我尝试获取表单击事件的最佳尝试示例:
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(DT::dataTableOutput('table')),
server = function(input, output, session) {
output$table <- DT::renderDataTable({
dt <- data.frame(a = 1)
datatable(dt, rownames = FALSE, selection = 'none')
})
observeEvent(input$table_cell_clicked, {
print(Sys.time())
})}
))
Run Code Online (Sandbox Code Playgroud)
问题是,observeEvent只有当用户点击与之前点击的单元格不同的单元格时,才会做出反应.有没有办法在任何桌面上点击活动?
我想在列组之间添加一条垂直线.这是一个理想的结果:
---------
g1 | g2
---------
a b | a b
---------
1 2 | 3 4
---------
Run Code Online (Sandbox Code Playgroud)
和一个闪亮的应用程序开始:
library(shiny)
library(DT)
library(htmltools)
runApp(shinyApp(
ui <- basicPage(
DT::dataTableOutput('table1')
),
server = function(input, output) {
output$table1 <- DT::renderDataTable({
datatable(data.frame(a1 = 1, b1 = 2, a2 = 3, b2 = 4), rownames = FALSE,
container = withTags(table(
class = 'display',
thead(
tr(
th(colspan = 2, 'g1'),
th(colspan = 2, 'g2')
),
tr(
lapply(rep(c('a', 'b'), 2), th)
)
)
))
)
})
}
)) …Run Code Online (Sandbox Code Playgroud) 如何在闪亮的应用程序中更改数据表中所选行的背景颜色?我的ui.R具有以下代码:
library(shinydashboard)
header <- dashboardHeader(title = 'title')
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem('dashboard', tabName = 'dashboard', icon = icon('dashboard'))
)
)
body <- dashboardBody(
fluidRow(
column(width = 6,
box(
title = 'box', width = NULL, status = 'primary',
DT::dataTableOutput('table1')
),
box(
title = 'box', width = NULL, status = 'primary',
DT::dataTableOutput('table2')
)
),
column(width = 6,
box(
title = 'box', width = NULL, status = 'primary',
DT::dataTableOutput('table3')
)
)
)
)
dashboardPage(header, sidebar, body)
Run Code Online (Sandbox Code Playgroud) 我有一个使用R shiny库构建实时数据可视化的应用程序.我使用reactivePoll函数定期从文件重新加载数据.我不喜欢这样的,每当数据重新加载时,整个应用程序都会刷新.
因此,例如,如果我有DT选择的表输出,并且我使用此选择,input$table_rows_selected它将重置为NULL数据重新加载,这完全不是用户友好的.
是否总体可以在不中断用户的情况下更改数据输出?
UPDATE.
这可以用任何其他包显示表 - googleVis或其他?
工作实例.
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(dataTableOutput('table')),
server = function(input, output, session) {
pollData <- reactivePoll(4000, session,
checkFunc = function(){ Sys.time() },
valueFunc = function(){ data.frame(id = sample(letters[1:3]), a = runif(3), b = runif(3), c = runif(3)) })
output$table <- renderDataTable({pollData()})
proxy <- dataTableProxy('table')
observeEvent(pollData(), {
selectRows(proxy, input$table_rows_selected)
})}
))
Run Code Online (Sandbox Code Playgroud)
我从@NicE回答了这个例子并添加了id列.关键是,当行由行号标识时,如果需要选择某行,则@NicE答案是可以的.
现在假设当某行由某个id值标识时,我需要选择一行.也就是说,如果我选择id等于b的行,那么下次数据重新加载时我希望选择具有相同id值的行.
我在这里运行一个例子.
library(rhandsontable)
library(shiny)
runApp(shinyApp(
ui = fluidPage(rHandsontableOutput("hot")),
server = function(input, output, session) {
fname <- "mtcars2.csv"
values <- reactiveValues()
setHot <- function(x) values[["hot"]] = x
observe({
if(!is.null(values[["hot"]])) write.csv(values[["hot"]], fname)
})
output$hot <- renderRHandsontable({
if (!is.null(input$hot)) {
DF <- hot_to_r(input$hot)
} else {
DF <- read.csv("mtcars.csv", stringsAsFactors = FALSE)
}
setHot(DF)
rhandsontable(DF) %>%
hot_table(highlightCol = TRUE, highlightRow = TRUE) %>%
hot_cols(columnSorting = TRUE)
})
}
))
Run Code Online (Sandbox Code Playgroud)
我希望对表进行的更改保存在文件中mtcars2.csv.我还想保留行顺序.在项目主页中,它说"排序只影响小部件,不会重新排序原始数据集".我可以以某种方式获取表的当前视图并保存它吗?