Przeliczenie mil na kilometry

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:

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

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.

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ę?

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