我有两个不同长度的向量,我想将一个函数应用于两个向量的每个可能组合,从而产生一个矩阵。
在我的特定示例中,两个向量是charactor向量,我想应用函数grepl
,即:
names <- c('cats', 'dogs', 'frogs', 'bats')
slices <- c('ca', 'at', 'ts', 'do', 'og', 'gs', 'fr', 'ro', 'ba')
results <- someFunction(grepl, names, slices)
results
ca at ts do og gs fr ro ba
cats TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
dogs FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
frogs FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE
bats FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE
现在我正在使用for loops
,但我确信有一种更好,更有效的方法。我对apply functions
以及aggregate
,by
,sweep
等进行了大量研究,但未找到我要找的内容
感谢您的帮助。
答案 0 :(得分:3)
试试这个
library(stringr)
t(sapply(names,str_detect,pattern=slices))
您也可以使用grepl
sapply(slices, grepl, names)