एक switch
बयान है, लेकिन मुझे लगता है कि जिस तरह से मुझे यह सोचना चाहिए काम करने के लिए इसे प्राप्त करने के लिए कभी नहीं मिल सकता है। चूंकि आपने एक उदाहरण नहीं दिया है, मैं एक कारक चर का उपयोग करके बनाऊंगा:
dft <-data.frame(x = sample(letters[1:8], 20, replace=TRUE))
levels(dft$x)
[1] "a" "b" "c" "d" "e" "f" "g" "h"
यदि आप उन श्रेणियों को निर्दिष्ट करते हैं जिन्हें आप पुन: असाइनमेंट के लिए उपयुक्त क्रम में चाहते हैं तो आप कारक या संख्यात्मक चर को एक सूचकांक के रूप में उपयोग कर सकते हैं:
c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x]
[1] "def" "h" "g" "def" "def" "abc" "h" "h" "def" "abc" "abc" "abc" "h" "h" "abc"
[16] "def" "abc" "abc" "def" "def"
dft$y <- c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x] str(dft)
'data.frame': 20 obs. of 2 variables:
$ x: Factor w/ 8 levels "a","b","c","d",..: 4 8 7 4 6 1 8 8 5 2 ...
$ y: chr "def" "h" "g" "def" ...
मुझे बाद में पता चला कि वास्तव में दो अलग-अलग स्विच फ़ंक्शन हैं। यह सामान्य समारोह नहीं है, लेकिन आप इसके बारे में के रूप में या तो सोचना चाहिए switch.numeric
या switch.character
। यदि आपका पहला तर्क एक आर 'कारक' है, तो आप switch.numeric
व्यवहार प्राप्त करते हैं, जो समस्याओं का कारण बन सकता है, क्योंकि ज्यादातर लोग कारकों को चरित्र के रूप में प्रदर्शित करते हैं और गलत धारणा बनाते हैं कि सभी कार्य उन्हें इस तरह संसाधित करेंगे।
dput()
b का उपयोग करते हुए ) क्या आप बेस R, dplyr, data.table, tidyaderse में एक समाधान चाहते हैं ...?