gpt4 book ai didi

r - 基于 Shiny slider 谓词对数据帧行值求和

转载 作者:行者123 更新时间:2023-12-01 23:59:07 24 4
gpt4 key购买 nike

我正在构建一个 Shiny 的应用程序,它读取一个 csv,然后显示三个 Shiny 的 dataTables,每个都显示在它自己的 tabPanel 中;我无法弄清楚如何处理第三张 table 。

输入的 csv 包含看起来像的值

0, 1, 2, 3, 4, 5
0.01, 0.02, 0.11, 0.00, 0.1
.
.
.

我正在尝试显示一个显示值的表格,以及一个附加列,该列小于 slider 谓词的计数行值。因此,如果我将 slider 值设置为 0.05,则所需的输出将是

tally, 0, 1, 2, 3, 4, 5
3, 0.01, 0.02, 0.11, 0.00, 0.1

UI.r我试过了(不包括不相关的代码)

sidebarPanel(
sliderInput("p-value", "P-Value Adjustment:",
min = 0.01, max = 0.1, value = 0.05, step = 0.01),
),

mainPanel(
#excluding two other panels that work correctly
tabsetPanel(
tabPanel("Interactive-Data",
dataTableOutput("interactive.table"))
)
)

然后在Server.r

shinyServer(function(input, output) {
value.frame <- read.csv("path/to/file")

sliderValues <- reactive({

input.frame <- data.frame(
Name = c("p-value"),
Value = c(input$p-value))

data.frame(cbind(input.frame, value.frame, stringsAsFactor=FALSE))

})

#I'm lost here
output$interactive.table = renderDataTable({
data.frame$tally <- rowSums(data.frame < p-value)
data.frame

})

我迷失了如何使用来自 sliderInput 的输入来动态重新计算 interactive.table$t​​ally 列的值。 renderDataTable 是否合适,或者是否有其他方法可以解决这个问题?

最佳答案

这似乎可以满足您的要求:

library(shiny)
shinyUI = pageWithSidebar(
headerPanel("Title"),
sidebarPanel(
sliderInput("p.value", "P-Value Adjustment:",
min = 0.01, max = 0.1, value = 0.05, step = 0.01)),
mainPanel(
tabsetPanel(
tabPanel("Interactive-Data",
dataTableOutput("interactive.table"))))
)
shinyServer = function(input,output){
value.frame <- data.frame(matrix(round(runif(60,0,0.2),2),ncol=6))
output$interactive.table <- renderDataTable({
tally <- sapply(1:nrow(value.frame), function(i)
rowSums(value.frame[i,2:ncol(value.frame)] < input$p.value,na.rm=T))
df <- data.frame("p-value"=input$p.value,tally,value.frame)
colnames(df)[3:8] <- c(as.character(0:5))
df
})}
runApp(list(
ui = shinyUI,
server = shinyServer
))

您的代码存在几个问题。这里有一些:

  1. 引用 p-value 而不是 input$p-value
  2. 使用 p-value 作为变量名。 R 认为 input$p-valueinput$p 减去 value。您可以使用 input$"p-value" 来解决这个问题,但这会使代码几乎难以理解,所以我将 p-value 更改为 p.value
  3. 您在对 renderDataTable(...) 的调用中引用了 data.frame,就好像它是一个变量一样。
  4. 大多数创建或返回数据框的函数都会在任何以数字开头的列名前加上 X,因此如果您坚持在列名中使用数字,则必须去掉那些 >X 的
  5. rowSums(...) 不是那样工作的。

关于r - 基于 Shiny slider 谓词对数据帧行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com