У меня есть два вектора разной длины, и я хотел бы применить функцию к любой возможной комбинации двух векторов, в результате чего получается матрица.Примените функцию к двум векторам различной длины и верните матрицу в R
В моем конкретном примере, два вектора 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
и т. Д., Но не нашел то, что я ищу.
Спасибо за помощь.
Проверьте 'outer' функцию. –
'outer (names, slices, stringr :: str_detect)' – alistaire
Вы также можете установить имена с '\' dimnames <- \ '(внешние (имена, срезы, stringr :: str_detect), список (имена, фрагменты)) ', подумал, что лучше всего сделать это в двух строках. – alistaire