【发布时间】:2014-10-08 19:53:28
【问题描述】:
我有一个逗号分隔的字符类
A = "123,456,789"
当字符类中的一项出现在字符数组中时,我正在尝试获取一个逻辑向量。
B <- as.array(c("456", "135", "789", "111"))
我正在寻找大小为 4(长度为 B)的逻辑结果
[1] TRUE FALSE TRUE FALSE
对 R 相当陌生,因此我们将不胜感激。提前致谢。
【问题讨论】:
我有一个逗号分隔的字符类
A = "123,456,789"
当字符类中的一项出现在字符数组中时,我正在尝试获取一个逻辑向量。
B <- as.array(c("456", "135", "789", "111"))
我正在寻找大小为 4(长度为 B)的逻辑结果
[1] TRUE FALSE TRUE FALSE
对 R 相当陌生,因此我们将不胜感激。提前致谢。
【问题讨论】:
您可以使用 sapply 和 grepl 的组合,如果匹配则返回逻辑
sapply(B, grepl, x=A)
【讨论】:
由于您的比较向量是用逗号分隔的,因此您可以将其用作非循环方法。
B %in% strsplit(A, ",")[[1]]
# [1] TRUE FALSE TRUE FALSE
另一种循环方法是使用Vectorize 和grepl。这在内部使用mapply。
Vectorize(grepl, USE.NAMES = FALSE)(B, A)
# [1] TRUE FALSE TRUE FALSE
【讨论】: