我得承认我被这个难住了。我有一个函数,它接受一个数据框并从其中的用户特定变量返回摘要数据。它看起来像这样:
descr_function <- function(data, ...){
stats <- data %>%
group_by(variable, ...) %>%
summarize(N = length(value[!is.na(value)]),
Missing = length(value[is.na(value)]),
Perc.Avail = (length(value[!is.na(value)])/(length(value[!is.na(value)]) + length(value[is.na(value)]))) * 100,
Mean = mean(value, na.rm=TRUE),
Median = median(value, na.rm=TRUE),
Min = min(value, na.rm=TRUE),
Max = max(value, na.rm=TRUE),
Range = max(value, na.rm=TRUE) - min(value, na.rm=TRUE),
Variance = var(value, na.rm=TRUE),
Std.Dev = sd(value, na.rm=TRUE),
Coef.Var = sd(value, na.rm=TRUE)/mean(value, na.rm=TRUE),
SE = sd(value, na.rm=TRUE)/sqrt(length(value[!is.na(value)])),
Skewness = e1071::skewness(value, na.rm=TRUE),
Kurtosis = e1071::kurtosis(value, na.rm=TRUE),
IQR = IQR(value, na.rm=TRUE),
MAD = mad(value, na.rm=TRUE)
)
stats <- data.frame(stats)
stats[,4:17] <- round2(stats[,4:17],input$descrDigits)
return(stats)}
该函数由以下方式调用:
all_stats <- descr_function(descrDataMelted)
UI由以下方式调用:
numericInput('descrDigits','# Decimals to Display', value = 3, min = 0, max = 10, step = 1),
我希望函数对 input$descrDigits 做出反应。从 R Studio 网站上的基础知识开始,我得到了这样的信息:
statsNumericInput <- function(id, label = "Counter") {
ns <- NS(id)
numericInput(ns('descrDigits'), label)
}
numericInputServer <- function(id) {
moduleServer(
id,
function(input, output, session) {
# PUT descr_function in here??
}
)
}
在 Shiny 应用调用的 UI 部分:
statsNumericInput("descrDigits", label = '# Decimals to Display', value = 3, min = 0, max = 10, step = 1)
在代码调用的服务器部分:
numericInputServer("descrDigits", variables I want to get stats for?)
我知道这个问题非常开放,但我可以使用一些指导来调整我的代码以使其正常工作。任何帮助都会很棒。谢谢你。