在Shiny Web应用程序输出中获取“范围0的表”

时间:2018-12-04 17:50:05

标签: r shiny shiny-server frequency-analysis shiny-reactivity

我在Shiny服务器功能中读取了一个数据文件。我想显示用户使用下拉菜单选择的两列的频率表。我收到错误“范围0的表”。我查看了R error - Table of extent 0Can't solve table issue,但是我已经正确导入了数据,并且列名也匹配。在控制台中运行同一行代码。

这是我的代码:

0xfbff0000

更新:这是表格的当前外观:

screenshot

我希望输出为矩阵格式,就像在控制台中运行shinyServer(function(input, output) { output$courseData = renderPrint( { data = read.csv(file = 'FourCourseTableLetterGrades_POLISHED.tsv', sep = '\t', header = TRUE) c1 = input$course1 c2 = input$course2 tbl = table(data$c1, data$c2) tbl } ) } ) 命令时所得到的一样。我也不知道为什么列分别命名为tableVar1以及在何处进行更改。

2 个答案:

答案 0 :(得分:1)

第一个问题是c1c2是字符变量,因此您需要使用[[]]而不是$。第二个问题是,您看到的是table的结果的表格格式,如果您更喜欢矩阵,则可以使用dplyr包来计算示例,这很容易

library(dplyr)

data = read.csv(file = 'FourCourseTableLetterGrades_POLISHED.tsv', sep = '\t', header = TRUE)
    c1 = input$course1
    c2 = input$course2
    tbl = tibble(data[[c1]], data[[c2]]) %>% 
       group_by_all() %>%  
       tally() %>%  
       tidyr::spread(2,n)
    tbl

希望这会有所帮助!

答案 1 :(得分:0)

使用data[[c1]]代替注释中建议的data$c1消除了错误,并显示了基本(尽管格式错误)输出。我不明白为什么。