Een prompt-/antwoordsysteem maken om gegevens in te voeren in R

Ik heb wat R-code gemaakt voor gebruik door mensen die niets van R weten (hoewel ik zelf behoorlijk groen ben). Ik heb mensen de initiële gegevens in de R-console laten plakken (met wisselende resultaten), en ik hoopte een gebruiksvriendelijkere manier te creëren voor mensen om gegevens in te voeren.

Idealiter zou iemand achter de console kunnen gaan zitten, een commando intypen en specifieke vragen krijgen over het invoeren van de gegevens.

Een persoon laadt bijvoorbeeld r en ziet een prompt:

What is x value?

De persoon typt in:

2

Volgende prompt:

What is y value?

Persoon typt in:

3

Volgende prompt:

What are T values?

Persoon typt in:

4,3,2,1

Volgende prompt:

Wat zijn V-waarden?

Persoon typt in:

4,5,6,9

En met deze 4 nieuw gedefinieerde variabelen (X,Y,T,V) is de volgende stap van R het uitvoeren van de vooraf geschreven code

X+Y
V+T

En in de console verschijnen de antwoorden

5
8 8 8 10

En iedereen is blij

Mijn excuses, want dit is geen reproduceerbare vraag in de vorm van een code, maar ik weet niet hoe ik het moet aanpakken om R vragen te laten stellen in plaats van dat ik vragen stel over R!


Antwoord 1, autoriteit 100%

Aangezien dit bedoeld is om alleen als interactieve code te worden gebruikt, kan readline()voor u werken. Ik heb geen foutcontrole toegevoegd, maar je zou waarschijnlijk een behoorlijke hoeveelheid daarvan willen doen om een ​​juiste invoer te garanderen. Dit is echter het kernconcept:

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))
}

Antwoord 2, autoriteit 95%

Zie ook ?menuvan utilsvoor een eenvoudige tekstbasismenu-interface en prompt, die ook wordt gebruikt in devtools.

Hier is een voorbeeld:

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

Antwoord 3, autoriteit 9%

Aangezien deze vraag uit de dood is herrezen, schrijft hij waarschijnlijk een geüpdatet antwoord.

Als een GUI in dit geval al helpt, is het Shiny-pakket nu goed geïntegreerd met RStudio, en het zou heel gemakkelijk zijn om dit als een Shiny-toepassing te implementeren. De website http://shiny.rstudio.comheeft meer info, inclusief voorbeelden en documentatie.


Antwoord 4, autoriteit 6%

Het kan in dit specifieke geval overdreven zijn, maar het pakket swirlis goed om R interactief te introduceren bij beginners.

swirl is een softwarepakket voor de programmeertaal R dat draait
de R-console in een interactieve leeromgeving. Gebruikers ontvangen
onmiddellijke feedback als ze worden begeleid door lessen in hun eigen tempo in
data science en R-programmering.

De instructies voor het genereren van inhoud zijn hier te vinden: http://swirlstats.com/instructors.html.

Other episodes