我在Shiny服务器功能中读取了一个数据文件。我想显示用户使用下拉菜单选择的两列的频率表。我收到错误“范围0的表”。我查看了R error - Table of extent 0和Can't solve table issue,但是我已经正确导入了数据,并且列名也匹配。在控制台中运行同一行代码。
这是我的代码:
0xfbff0000
更新:这是表格的当前外观:
我希望输出为矩阵格式,就像在控制台中运行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
}
)
}
)
命令时所得到的一样。我也不知道为什么列分别命名为table
和Var1
以及在何处进行更改。
答案 0 :(得分:1)
第一个问题是c1
和c2
是字符变量,因此您需要使用[[]]
而不是$
。第二个问题是,您看到的是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
消除了错误,并显示了基本(尽管格式错误)输出。我不明白为什么。