Вопрос по r – Создание системы подсказок / ответов для ввода данных в R

71

Я создал некоторый R-код для использования людьми, которые ничего не знают о R (хотя я и сам довольно зеленый). Я велел людям вставлять исходные данные в консоль R (со смешанными результатами), и я надеялся установить более удобный для пользователя способ ввода данных.

В идеале кто-то может сесть за консоль, ввести команду и получить конкретные вопросы о том, как вводить данные.

Например, человек загружает r и видит приглашение:

What is x value?

Человек вводит в:

2

Следующая подсказка:

What is y value?

Человек вводит в:

3

Следующая подсказка:

 What are T values?

Человек вводит в:

 4,3,2,1

Следующая подсказка:

Каковы значения V?

Человек вводит в:

4,5,6,9

И с этими 4 вновь определенными переменными (X, Y, T, V) следующим шагом R является запуск предварительно написанного кода.

X+Y
V+T

И в консоли всплывают ответы

5
8 8 8 10

И все счастливы

Я извиняюсь за то, что это не воспроизводимый код, но я не уверен, как подойти к тому, чтобы заставить R задавать вопросы, в отличие от меня, задающего вопрос о R!

Ваш Ответ

4   ответа
5

swirl Пакет хорош для интерактивного представления R новичкам.

swirl is a software package for the R programming language that turns the R console into an interactive learning environment. Users receive immediate feedback as they are guided through self-paced lessons in data science and R programming.

Инструкции по созданию контента можно найти здесь:http://swirlstats.com/instructors.html.

41

?menu отutils для простого текстового базового интерфейса меню и подсказки, которая также используется вdevtools.

Вот пример:

> menu(c("Yes", "No"), title="Do you want this?")
Do you want this? 

1: Yes
2: No

Selection:
61

а,readline() может работать на вас. Я не добавил никакой проверки ошибок, но вы, вероятно, захотите сделать изрядную сумму для обеспечения правильного ввода. Вот основная концепция, хотя:

fun <- function(){
  x <- readline("What is the value of x?")  
  y <- readline("What is the value of y?")
  t <- readline("What are the T values?")
  v <- readline("What are the V values?")

  x <- as.numeric(unlist(strsplit(x, ",")))
  y <- as.numeric(unlist(strsplit(y, ",")))
  t <- as.numeric(unlist(strsplit(t, ",")))
  v <- as.numeric(unlist(strsplit(v, ",")))

  out1 <- x + y
  out2 <- t + v

  return(list(out1, out2))

}
@LaurenFitch спасибо !!
@Seanosapien Strsplit необходим для удаления запятых из входных данных, если пользователь вводит «4,3,2,1». как в оригинальном примере. Нет необходимости, если ввод не в этом формате.
Это мило. Однако я просто пытался понять, что именно происходит с функциями unlist и strsplit. Что здесь делает R?
Код прекрасно работает! Я был немного озадачен тем, как его запустить, но, посмотрев на примечания по readline (), я просто добавил одну последнюю строку к вышеприведенному & quot; if (interactive ()) fun () & quot; и он запускает приглашение автоматически. Спасибо! Vinterwoo
7

it's probably writing an updated answer.

Если графический интерфейс пользователя вообще полезен в этом случае, пакет Shiny теперь хорошо интегрирован с RStudio, и было бы очень легко реализовать это как приложение Shiny. Веб-сайтhttp://shiny.rstudio.com имеет больше информации, включая примеры и документацию.

Похожие вопросы