Заранее извиняюсь, если об этом уже спрашивали.Я не смог придумать описательный поисковый термин.
У меня есть следующий список:
list(
c('apples', 'bananas', 'pears'),
c('dragons'),
c('strawberries'),
c('apples','bananas','strawberries')
)
Я ищу функцию f
, которая бы возвращала долю элементов, которые имеюту термина X также есть термин Y.
Например: я знаю, что каждый раз, когда мой элемент списка имеет термин «бананы», он также имеет термин «яблоки»;то есть f('bananas', 'apples') = 1
.Аналогично, f('strawberries','apples') = 0.5
, потому что есть 2 элемента списка с «клубникой», но только у 1 из них также есть «бананы».Чтобы привести еще один пример, я ожидал бы, что f('apples','strawberries')
вернет 0,5, так как у меня есть 2 элемента с «яблоками», и у одного из них также есть «клубника».
Я понимаю, что мог бы сделать это с 2циклы, где на первом проходе я бы создал templist1, который имеет все элементы, которые содержат первый аргумент f (), а на втором шаге я бы создал templist2, который будет содержать все элементы templist1, которые содержат второй аргументиз f ().Тогда мой ответ будет просто length(templist2)/length(templist1)
.Я ищу векторизованную реализацию.
Любые указатели приветствуются.Спасибо!:)