Создание системы Prompt/Answer для ввода данных в R
Я создал некоторый 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!
Ответы
Ответ 1
Так как это предполагается использовать только в качестве интерактивного кода, 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))
}
Ответ 2
См. также ?menu
из utils
для простого текстового интерфейса и подсказки меню, который также используется в devtools
.
Вот пример:
> menu(c("Yes", "No"), title="Do you want this?")
Do you want this?
1: Yes
2: No
Selection:
Ответ 3
Поскольку этот вопрос был возвращен из мертвых, он, вероятно, написал обновленный ответ.
Если графический интерфейс вообще полезен в этом случае, пакет Shiny теперь хорошо интегрирован с RStudio, и было бы очень легко реализовать это как приложение Shiny. На веб-сайте http://shiny.rstudio.com содержится больше информации, включая примеры и документацию.
Ответ 4
Это может быть излишним для этого конкретного случая, но swirl
пакет хорош для интерактивного введения R новичкам.
swirl - программный пакет для языка программирования R, который превращает консоль R в интерактивную среду обучения. Пользователи получают немедленную обратную связь, поскольку они ориентируются на самостоятельные уроки в области науки о данных и программирования R.
Инструкции по созданию контента можно найти здесь: http://swirlstats.com/instructors.html.
Ответ 5
Могу ли я ввести исходные входные данные в пакете "MI" или "MICE" с множественным вменением "R" с собой? Фактически, я хочу ввести значения исходных 5 входов отсутствующих данных, которые вставляются самой программой со значениями или методами. Спасибо