r - 对内部使用 grepl 的 vapply 函数感到困惑(datacamp 类(class)的一部分)

标签 r apply lapply sapply grepl

hits <- vapply(titles,
           FUN = grepl,
           FUN.VALUE = logical(length(pass_names)),
           pass_names)

titles 是一个带有标题的向量,例如 "mr"pass_names 是一个名称列表。

2 个问题。

  1. 我不明白由此产生的矩阵匹配
  2. 我不明白为什么最后一行是 pass_names,也不明白我应该如何了解这 4 个参数。在 ?vapply 下,它指定了 x、FUNFUN.VALUE 但我无法弄清楚我应该如何弄清楚 pass_names 需要列在那里。

我在网上查了,找不到答案,所以我希望这对其他人也有帮助。预先感谢您的回答,是的,我是初学者。


额外信息:本题使用R中的titanic包,pass_names就是titanic$Nametitles就是paste (",", c("Mr\\.", "Master", "Don", "Rev", "Dr\\.", "Major", "Sir", "Col", "Capt", "Jonkheer"))

最佳答案

你有点困惑是对的。

您问题中的 vapply 代码块等同于:

hits <- vapply(titles,
               FUN = function(x) grepl(x, pass_names),
               FUN.VALUE = logical(length(pass_names)))

vapply 接受一个 ... 参数,该参数接受尽可能多的参数。如果未命名参数(请参阅@Roland 的注释),则将 ... 位置中的第 n 个参数传递给 FUN 的第 n+1 个参数(FUN 的第一个参数是 X titles 在这种情况下)。

生成的矩阵的行数与 titanic 中的行数相同,并且有 10 列,即 titles 的长度。如果第 i pass_names 匹配,则第 [i, j] 条目为 TRUE j - titles 中的第 j 个正则表达式,如果不是,则为 FALSE

关于r - 对内部使用 grepl 的 vapply 函数感到困惑(datacamp 类(class)的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768642/

相关文章:

r - 如何从R中少于2个唯一级别的数据框中删除列

r - 矢量化()与应用()

python - Pandas - 删除重复行,但另一列中具有最高值的行除外

r - 您如何将多个.txt文件读入R?

r - lapply 的错误处理——输出失败元素的索引

r - Shiny 的矩阵形式的动态输入小部件

r - dnorm(x, mean=200, sd=20) 的积分不是 1

r - 在 clusterApply 中找不到函数

r - 子集列表,保留名称

r - 计算向量的最大版本