我在重新编码闪亮的一些值时遇到了一些问题。 似乎我的值被整合为因子,但我想将它们用作数值变量。
我试着解释一下。这是一个最小的例子:
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)。使用十进制数字它不起作用。十进制数字不会被重新编码。哪里是我的错?我该怎么办?
感谢您的帮助
答案 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