重新编码闪亮的变量

时间:2018-05-16 12:24:22

标签: r shiny

我在重新编码闪亮的一些值时遇到了一些问题。 似乎我的值被整合为因子,但我想将它们用作数值变量。

我试着解释一下。这是一个最小的例子:

datensatz_patient <- reactive({datensatz <- input$datensatz
                               infile    <- read.table(datensatz$datapath, header=TRUE, strip.white = TRUE, stringsAsFactors = FALSE, sep=";",dec=",", na = -77)

BSI_dat           <- reactive(subset(datensatz_patient(), select = c(Base_BSI_v1:Base_BSI_v53))

BSI.sub_soma      <- reactive(subset(BSI_dat(), select = c(2, 7, 23, 29, 30, 33, 37))) 

BSI.soma.SW       <- reactive(apply(BSI.sub_soma(),1, mean, as.numeric = TRUE, na.rm = TRUE))

BSI.soma.T_m      <- reactive(recode(BSI.soma.SW(), "0 = 41; 0.17 = 50; 1 = 60;  1.5 = 70; 2 = 80; 3.71 = 112"))


output$test8.1 <- renderTable(BSI.soma.SW())
output$test8.2 <- renderTable(BSI.soma.T_m())

我的问题是,BSI.soma.SW的重新编码无效。使用整数(1或2)BSI.soma.T_m获取新值(1 = 60或2 = 80)。使用十进制数字它不起作用。十进制数字不会被重新编码。哪里是我的错?我该怎么办?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为您recode表达式中的替换格式已关闭。很难说清楚,因为你没有包含你的数据样本,但我生成了一个数字矢量就足够了:

在示例中使用带有数字向量的recode表达式无法给出正确的答案:

recode(c(0,1,1,.17,2,3.71), "0 = 41; 0.17 = 50; 1 = 60;  1.5 = 70; 2 = 80; 3.71 = 112")
[1] NA                                                        
[2] "0 = 41; 0.17 = 50; 1 = 60;  1.5 = 70; 2 = 80; 3.71 = 112"
[3] "0 = 41; 0.17 = 50; 1 = 60;  1.5 = 70; 2 = 80; 3.71 = 112"
[4] NA                                                        
[5] NA                                                        
[6] NA                                                        
Warning message:
Unreplaced values treated as NA as .x is not compatible. Please specify replacements exhaustively or supply .default

如果我们将Replacements修改为多个逗号分隔,命名向量(使用L使其成为显式整数。请参阅此答案:What's the difference between `1L` and `1`?),我们得到正确的结果:

recode(c(0,1,1,.17,2,3.71), '0' = 41L, '0.17' = 50L, '1' = 60L,  '1.5' = 70L, '2' = 80L, '3.71' = 112L)
[1]  41  60  60  50  80 112