में सूची तत्वों के सभी जोड़ी संयोजनों के लिए एक फ़ंक्शन लागू करें मैं सूची तत्वों के सभी जोड़ी संयोजनों में एक फ़ंक्शन लागू करना चाहता हूं। प्रत्येक तत्व एक ही लंबाई के साथ एक वेक्टर है। मैं n x n
मैट्रिक्स प्रारूप में आउटपुट चाहता हूं, n
मेरी सूची में तत्वों की संख्या होने के नाते।आर
निम्न उदाहरण पर विचार करें:
# Generating data
l <- list()
for(i in 1:5) l[[i]] <- sample(0:9, 5, T)
# Function to apply
foo <- function(x, y) 1 - sum(x * y)/sqrt(sum(x^2) * sum(y^2))
# Generating combinations
comb <- expand.grid(x = 1:5, y = 1:5)
इस पाश काम करता है, लेकिन यह धीमी है और उत्पादन एक मैट्रिक्स
# Applying function
out <- list()
for(i in 1:nrow(comb)) {
out[[i]] <- foo(l[[comb[i, 'x']]], l[[comb[i, 'y']]])
}
किसी भी विचार के रूप में स्वरूपित नहीं है?
sapply(l, function(x) sapply(l, function(y) foo(x,y)))
मैं @A में रुचि थी:
'बाहरी (एल, एल, वेक्टरिज़ (foo))' –
वाह! आपके उत्तर के लिए धन्यवाद, यह बहुत तेज है;) – goclem