hits <- vapply(titles,
FUN = grepl,
FUN.VALUE = logical(length(pass_names)),
pass_names)
titles
是一个带有标题的向量,例如 "mr"
,pass_names
是一个名称列表。
2 个问题。
- 我不明白由此产生的矩阵匹配
- 我不明白为什么最后一行是
pass_names
,也不明白我应该如何了解这 4 个参数。在?vapply
下,它指定了 x、FUN
、FUN.VALUE
但我无法弄清楚我应该如何弄清楚pass_names
需要列在那里。
我在网上查了,找不到答案,所以我希望这对其他人也有帮助。预先感谢您的回答,是的,我是初学者。
额外信息:本题使用R中的titanic包,pass_names
就是titanic$Name
,titles
就是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
jtitles
中的第 j 个正则表达式,如果不是,则为 FALSE
。
关于r - 对内部使用 grepl 的 vapply 函数感到困惑(datacamp 类(class)的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768642/