2011-10-26 16 views
9

पृष्ठभूमि: मेरे पास एक ऐसा फ़ंक्शन है जो कुछ पैरामीटर लेता है। मैं सभी संभावित पैरामीटर संयोजनों के लिए फ़ंक्शन का परिणाम प्राप्त करना चाहता हूं।आर में, मैं कुछ वैक्टरों के मूल्यों के सभी संभावित संयोजन कैसे प्राप्त करूं?

एक सरल उदाहरण:

f <- function(x, y) { return paste(x, y, sep=",")} 
colors = c("red", "green", "blue") 
days = c("Monday", "Tuesday") 

मैं अपने परिणाम की तरह

 color day   f  
[1,] "red" "Monday" "red,Monday" 
[2,] "red" "Tuesday" "red,Tuesday" 
[3,] "green" "Monday" "green,Monday" 
[4,] "green" "Tuesday" "green,Tuesday" 
[5,] "blue" "Monday" "blue,Monday" 
[6,] "blue" "Tuesday" "blue,Tuesday" 

मेरा विचार देखना चाहते कॉलम color और day के साथ एक मैट्रिक्स बनाने के लिए, मौजूदा वैक्टर colors का उपयोग कर इसे भरने है और days, परिणामों के लिए एक खाली कॉलम प्रारंभ करें, फिर प्रति मैट्रिक्स पंक्ति में एक बार f कॉल करने के लिए लूप का उपयोग करें और परिणाम को अंतिम कॉलम में लिखें। लेकिन मुझे नहीं पता कि colors और days वेक्टर से आसानी से मैट्रिक्स कैसे उत्पन्न करें। मैंने इसकी खोज करने की कोशिश की, लेकिन मुझे मिलने वाले सभी परिणाम combn फ़ंक्शन के लिए थे, जो कुछ अलग करता है।

इस सरलीकृत मामले में, colors और days कारक हैं, लेकिन मेरे असली उदाहरण में, यह मामला नहीं है। फ़ंक्शन के कुछ पैरामीटर पूर्णांक हैं, इसलिए मेरा असली वेक्टर 1, 2, 3 जैसा दिख सकता है और फ़ंक्शन की आवश्यकता होगी कि इसे संख्यात्मक के रूप में पास किया जाए। तो कृपया कोई समाधान नहीं है जो कारक स्तर पर निर्भर करता है, अगर वे किसी भी तरह से पूर्णांक के साथ काम करने के लिए उपयोग नहीं किया जा सकता है।

+0

संबंधित: http://stackoverflow.com/questions/39 9 3546/कैसे-से-जेनरेट-ए-मैट्रिक्स-ऑफ-संयोजन –

+0

संभावित डुप्लिकेट [तीन तारों के सभी संभावित संयोजन ढूंढना] (http://stackoverflow.com/questions/6254533/finding-all-possible-combinations -फ-ए-थ्री-स्ट्रिंग्स) –

उत्तर

22

मुझे लगता है कि तुम सिर्फ expand.grid हैं:

> colors = c("red", "green", "blue") 
> days = c("Monday", "Tuesday") 
> expand.grid(colors,days) 
    Var1 Var2 
1 red Monday 
2 green Monday 
3 blue Monday 
4 red Tuesday 
5 green Tuesday 
6 blue Tuesday 

और, यदि आप एक ही पंक्ति में स्तंभ नाम निर्दिष्ट करना चाहते हैं:

> expand.grid(color = colors, day = days) 
    color  day 
1 red Monday 
2 green Monday 
3 blue Monday 
4 red Tuesday 
5 green Tuesday 
6 blue Tuesday 
+5

और, यदि आप विशिष्ट बनाना चाहते हैं उसी पंक्ति में स्तंभ नामों को भरें, 'expand.grid (रंग = रंग, दिन = दिन) ' –

संबंधित मुद्दे

 संबंधित मुद्दे