Zapytanie o wczytanie danych z klawiatury w R

0

Witam. Kiedyś bawiłem się w programowanie. Był to BASIC, FORTRAN 77 czy CLIPPER. Teraz jestem stary i dla przyjemności chciałbym popróbować programowania w R. No i siedze od 2 dni. Piszę proste programiki ćwicząc pętle. np: for(a in 1:10){print(a)} i teraz mam problem bo za liczbę 10 chcę wstawić zmienną "x" (for(a in 1:x){print(a)})i poprzedzić wszystko linią która zczyta z klawiatury jej wartość. Np w BASIC-u była to komenda INPUT(). I nie mam pojęcia jak to zrobić. Przekopałem internet i nalazłem tylko "scan()" ale nie rozumiem jak to działa. To naprawdę bardzo niski poziom jak dla was, a dla mnie ściana nie do przejścia na tym poziomie wiedzy. Z góry dzięki.

0

Pierwszy wynik z google:
https://www.datamentor.io/r-programming/examples/user-input/
my.name <- readline(prompt="Enter name: ")

0

Dziękuję bardzo. Na podstawie tego co jest pod tym linkiem, spłodziłem coś takiego: I to niestety nie działa :( ale jutro też jest dzień.
x <- readline(prompt="x: ");
x <- as.integer(x)
for(a in 1:x)
{
print(a)
}

0

Czy naprawdę nie ma w R instrukcji czytania z klawiatury danych typu int czy float. Czy jak napiszę program obliczający pierwiastki równania kwadratowego to za każdym razem muszę ingerować do kodu i zmieniać parametry równania ręcznie , zapisywać program i uruchamiać go od nowa. Ten link podany przez kolege powyżej zczytuje dane typu string. Potem trzeba to konwertować na liczbę. Szukam odpowiednika instrukcji np. w Pythonie input(). > a = int(input() - dla liczb naturalnych.

0

A jaki błąd dostajesz? Co znaczy że nie działa? Czy po readline możesz wyprintować wartość x?

0

Mozna wyprintować x jako tekst, a po drugie tylko wtedy kiedy uruchomisz tylko tą linie. Po wpisaniu w kodzie pod linią readline kolejnej instrukcj, do wartości x jest przypisawan cała kolejna linia kodu jako zmienna tekstowa. Nie wiem czy dobrze to wyjaśniłem.
x <- readline(prompt="x: ");
x: x <- as.integer(x)

for(a in 1:x)

  • {
  • print(a)
  • }
    Błąd w poleceniu '1:x':argument o wartości NA/NaN
    Dodatkowo: Komunikat ostrzegawczy:
    W poleceniu '1:x': pojawiły się wartości NA na skutek przekształcenia
0

Jak doszedłeś do tego że casttowanie zmiennej na int sprawia że nie ma czegoś takiego 1:x?
Przeczytaj co jest tu napisane i zastosuj:
https://swcarpentry.github.io/r-novice-inflammation/15-supp-loops-in-depth/

0

sprobuj to obudowac w funkcje

f<-function()
{
x<-as.integer(readline("x: "));
for(a in 1:x)
{
  print(a)
}
}

i wywoluj tę funkcję

0

Funkcja którą napisał dla mnie Miang zapewne działa, ale ja nie potrafię sobie z tym poradzić. Ostatnio pisałem kody 30 lat temu. Język R w ogóle nie jest mi znany. Dlatego może prościej. W Rstudio piszę linie: print(1:10) i otrzymuje zwrot 1,2,...,10. Teraz chciałbym zapisać to samo ze zmienną x, czyli : print(1:x). Jednak muszę poprzedzić to instrukcę inną, czytającą x z klawiatury. I jeżeli ktoś może mnie oświecić jak to ma wyglądać to poproszę.

0

No tak działa ale x jest nieokreślone, tzn. podana liczba z klawiatury nie została przypisana do zmiennej. Po zakonczeniu programu jak w konsoli podam komende print(x) dostaje komunikat jak poniżej:

f()
x: 9
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
print(x)
Błąd w poleceniu 'print(x)':nie znaleziono obiektu 'x'. Chyba się poddam i poszukam innego języka. Dla mnie wprowadzanie danych z klawiatury jest bardzo ważne.

0

bo to jest zmienna wewnątrz funkcji, w innym języku też lokalnej zmiennej na zewnątrz funkcji byś nie zobaczył

0

Wróciłem do tego od czego zaczynałem :) czyli Fortran77. Tu wszystko jest jasne. Dzięki wszystkim za pomoc i jak się okazało, DOBRE rady.
Temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1