У меня есть датафрейм с несколькими строками.Я хочу, чтобы вызвать функцию, используя любые две строки.Например, допустим, у меня есть эти данные и myFunc, который принимает два аргумента:
df <- data.frame(q1=c(1,2,5), q2=c(5,5,5), q3=c(5,2,5), q4=c(5,5,5), q5=c(2,3,1))
df
q1 q2 q3 q4 q5
1 1 5 5 5 2
2 2 5 2 5 3
3 5 5 5 5 1
myFunc<-function(a,b) sum((df[a,]==df[b,] & df[a,]==5)*1)
Я хочу применить myFunc для строк 1 и 2, myFunc(1,2)
, и я ожидаю, что 2, myFunc вычислит, сколько "5 "имеют общее в одном столбце, между строками 1 и 2.
Поскольку у меня есть тысячи строк, и я хочу сопоставить все пары, я хочу сделать это без написания цикла for, может быть ссемейство функций вызова или применения.
Я пробовал это:
a=c(1,2) # match the row 1 and 2
b=c(2,3) # match the row 2 and 3
my_list=list(a,b)
do.call("myFunc", my_list)
Но я получил 4, а не 2 и 2, есть идеи?