r блестящий сервер создает вектор из входных данных для использования в подмножестве фрейма данных

server <- (function(input, output, session){
  s1m <- reactive({c(input$s1m1,input$s1m2,input$s1m3)})

  library(stringdist)
  result <- responses[which.max(apply(responses,1,function(vec,dat){sum(vec==dat)},s1m)),]

  output$result <- renderUI(result)
})

Мне нужно специально создать вектор символов «s1m» с тремя различными пользовательскими входами s1m1, s1m2, s1m3, чтобы его можно было использовать для подмножества «ответов» моего фрейма данных.

Ошибка, которую я получил, это Ошибка в vec == dat: сравнение (1) возможно только для атомарных и списковых типов

и я думаю, это потому, что s1m обернут reactive() и не считается вектором. Итак, мой вопрос заключается в том, как мне преобразовать его в вектор или есть ли другой способ создать вектор с помощью пользовательского ввода?

Большое спасибо всем вам!!


person Jason    schedule 28.12.2017    source источник
comment
не забудьте указать s1m() вместо s1m, где это необходимо.   -  person InfiniteFlash    schedule 28.12.2017


Ответы (1)


Я думаю, вы должны создать реактивные значения, как показано ниже. Я не проверял это, но в качестве альтернативы вы также можете обернуть их в фрейм данных или список.

server <- (function(input, output, session) {
  s1m <- reactiveValues({
    c(input$s1m1, input$s1m2,input$s1m3)
  })

  library(stringdist)
  result <-
    responses[which.max(apply(responses, 1, function(vec, dat) {
      sum(vec == dat)
    }, s1m())), ]

  output$result <- renderUI(result)
})
person user5249203    schedule 28.12.2017
comment
Я использовал reactiveValues ​​вместо реактивного и s1m() вместо s1m, и я получил ошибку в .getReactiveEnvironment()$currentContext(): операция не разрешена без активного реактивного контекста. (Вы пытались сделать что-то, что можно сделать только внутри реактивного выражения или наблюдателя.) Как я могу это сделать? Я могу использовать только вектор символов для подмножества, а не список или df - person Jason; 30.12.2017
comment
обновите свой вопрос с помощью кодов sample data и ui и server. Если у меня нет тех же данных, которые вы используете, их трудно воспроизвести. - person user5249203; 02.01.2018