Przeliczenie mil na kilometry

lester29
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 114
1

Hej, mam zadanie do zrobienia z R. Mianowicie otrzymuję błąd Error in 1.609 * iletokm[i] : non-numeric argument to binary operator. Program ma za zadanie przeliczać mile na kilometry.

Kod:

Kopiuj
mile_na_km <- function(iletokm) {
  ilekm = vector("list", length=length(iletokm))
  for (i in seq_along(iletokm)) {
    ilekm[i] = 1.609 * iletokm[i]
  }
  return(ilekm)
}
odleglosci_mile = list(0, 1, 10, 100, 170)
mile_na_km(odleglosci_mile)
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
0

GPT Chat powiedział

W powyższym kodzie w języku R, zdefiniowana jest funkcja mile_na_km, która przelicza odległość w milach na kilometry. Następnie tworzona jest lista odleglosci_mile zawierająca pięć liczb reprezentujących odległość w milach. Wreszcie, wywoływana jest funkcja mile_na_km z argumentem odleglosci_mile.

Jednakże, w funkcji mile_na_km występuje błąd. W tej funkcji, do przechowywania wyników przeliczeń używany jest wektor typu "list" zdefiniowany jako ilekm = vector("list", length=length(iletokm)). Powinien być to wektor typu "numeric", a nie "list", ponieważ funkcja przelicza liczby rzeczywiste, a nie listy. Z tego powodu, funkcja nie zwróci wyniku w oczekiwanym formacie.

Poprawiona funkcja powinna wyglądać następująco:

Kopiuj
mile_na_km <- function(iletokm) {
  ilekm = numeric(length=length(iletokm))
  for (i in seq_along(iletokm)) {
    ilekm[i] = 1.609 * iletokm[i]
  }
  return(ilekm)
}
odleglosci_mile = c(0, 1, 10, 100, 170)
mile_na_km(odleglosci_mile)

W poprawionej funkcji, zamiast wektora typu "list" używamy wektora typu "numeric", który jest odpowiedni do przechowywania wyników obliczeń. Po wykonaniu poprawek, funkcja powinna działać poprawnie i zwrócić wynik w oczekiwanym formacie.

elwis
  • Rejestracja: dni
  • Ostatnio: dni
3

a czemu nie po protstu lapply(iletokm, function(x) x*1.609) albo as.list(iletokm*1.609), jeśli już koniecznie chcesz listę?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.