输出无重复的随机向量元素

时间:2018-12-06 17:30:55

标签: r shiny

目前,我正在为日语平假名编写语言练习应用程序。功能部分很简单。按下button_1会产生平假名符号作为输出。当按下button_2时,它会产生符号的读数。每个显示的符号及其值都是随机显示的,所以现在我无法重复输出。

我现在的目标是使应用程序更加实用,而无需重复。为了实现这一点,我想到了该应用程序应该像这样工作:

  1. 混合向量“数据”的元素
  2. 对于每个元素(从混合元素的第一个到最后一个),只需按下button_1即可输出元素的名称
  3. 然后按下按钮_2,输出元素的值。
  4. 如果没有更多要使用的元素,则再次混合向量“数据”,并执行步骤2和步骤3中介绍的相同过程。

我目前的想法是,对于这些迭代中的每一个,我都应该将样本(数据)保存到一个新的向量中,然后应用一些条件。不幸的是,我这样做的方式有时仍然会重复元素名称,并且没有重复就无法工作。我将不胜感激任何反馈和提示。预先非常感谢。

data <- c("あ" = "a", "え" = "e", "い" = "i", "お" = "o", "う" = "u", "か" = "ka", "け" ="ke", "き" = "ki", "こ" = "ko", "く" = "ku")


library(shiny)

shinyServer((function(input, output) {
  values <- reactiveValues(one = 0, two = 0)

  symbol_final <- ""
  symbol_meta <- ""
  mixed_data <- ""
  index <- 1


  observeEvent(input$button_1, {
    values$one <- 1
    values$two <- 0

  })

  observeEvent(input$button_2, {
    values$one <- 0
    values$two <- 1

  })



  output$Output_1 <- renderText(
    {


      mixed_data <<- sample(data)



      if(values$one) {

        if(index <= length(data)){
          symbol_final <<- names(mixed_data[index])
          mixed_data <<- sample(data)
           return(symbol_final)
          index <<- index+1
        }

        else{
          index <<- 1 
          mixed_data <<- sample(sample(data))
        }


        return(symbol_final)

      }
      else if(values$two)

        return(data[symbol_final])

    }

  )


}))

0 个答案:

没有答案