R中的单个字母的长度是否为2?

时间:2019-05-31 20:39:16

标签: r

同样,我对我的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 个答案:

答案 0 :(得分:3)

当您在vapply中指定返回形状(长度为2的字符向量)时,它需要与您要调用的函数的返回类型(first_and_last)相匹配。

实际上,它们是单个字母还是很长的单词都没有关系,重要的是first_and_last返回一个包含两个元素的字符向量。