Отдельные буквы в R имеют длину 2? - PullRequest
2 голосов
/ 31 мая 2019

Опять меня смущает мой учебник по datacamp R. Видеопрезентация пытается объяснить разницу между vapply и sapply и представляет следующий код и выходные данные:

first_and_last <-function(name) {
  name <- gsub(" ", "", name)
  letters <- strsplit(name, split = "")[[1]]
  return(c(first = min(letters), last = max(letters))))
}

sapply(cities, first_and_last)


New York Paris London Tokyo Rio de Janeiro Cape Town  
first   "e"  "a"   "d"    "k"   "a"            "a"  
last    "y"  "s"   "o"    "y"   "R"        "w"


vapply(cities, first_and_last, character(2))

New York Paris London Tokyo Rio de Janeiro Cape Town  
first   "e"  "a"   "d"    "k"   "a"            "a"  
last    "y"  "s"   "o"    "y"   "R"        "w"

Как мы видим, результат идентичен. Мне сказали, что это потому, что длина символьного вектора в функции vapply установлена ​​вручную на 2, и если он был установлен на 1, мы столкнемся с ошибкой.

Я не уверен, что понимаю, это отдельные буквы, так зачем нам нужен символьный вектор длиной 2?

1 Ответ

3 голосов
/ 31 мая 2019

Когда вы указываете форму возврата в vapply (в вашем случае это символьный вектор длины 2), он должен соответствовать типу возврата функции, которую вы вызываете (first_and_last).

На самом деле не имеет значения, являются ли они отдельными буквами или очень длинными словами, важно то, что first_and_last возвращает символьный вектор с двумя элементами в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...