मतलाब में एक सदिश में मूल्यों को खोजने का एक तरीका है, लेकिन दूसरे में नहीं।
उदाहरण के लिए:
x <- c(1,2,3,4)
y <- c(2,3,4)
क्या ऐसा कोई कार्य है जो मुझे बताएगा कि इसमें मूल्य 1 x
नहीं y
है?
मतलाब में एक सदिश में मूल्यों को खोजने का एक तरीका है, लेकिन दूसरे में नहीं।
उदाहरण के लिए:
x <- c(1,2,3,4)
y <- c(2,3,4)
क्या ऐसा कोई कार्य है जो मुझे बताएगा कि इसमें मूल्य 1 x
नहीं y
है?
जवाबों:
हाँ। वैक्टर के लिए आप बस %in%
ऑपरेटर या is.element()
फ़ंक्शन का उपयोग कर सकते हैं ।
> x[!(x %in% y)]
1
एक मैट्रिक्स के लिए, कई अंतर दृष्टिकोण हैं। merge()
शायद सबसे सीधे आगे है। मेरा सुझाव है कि इस परिदृश्य के लिए इस प्रश्न को देखें ।
R में setdiff, Union, intersect, setequal, और is.element के लिए मदद फ़ाइल R में मानक सेट फ़ंक्शंस के बारे में जानकारी प्रदान करती है।
setdiff(x, y)
उस के तत्वों को वापस x
नहीं करता है y
।
जैसा कि ऊपर उल्लेख किया गया है, यह एक असममित अंतर है। उदाहरण के लिए:
> x <- c(1,2,3,4)
> y <- c(2,3,4,5)
>
> setdiff(x, y)
[1] 1
> setdiff(y, x)
[1] 5
> union(setdiff(x, y), setdiff(y, x))
[1] 1 5
x[is.na(match(x,y))]
setdiff()
एक मुश्किल कार्य है क्योंकि आउटपुट इनपुट के क्रम पर निर्भर है। आप इसके बजाय एक साधारण फ़ंक्शन लिख सकते हैं जो इसके ठीक विपरीत करता है intersect
। यह कहीं बेहतर है।
>difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
#Now lets test it.
>x <- c(1,2,3,4)
>y <- c(2,3,4,5)
>difference(x,y)
[1] 1 5
अगर:
x <- c(1,2,3,4)
y <- c(2,3,4)
इनमें से कोई भी भाव:
setdiff(x, y)
x[!(x %in% y)]
x[is.na(match(x,y))]
x[!(is.element(x,y))]
[1] 1
लक्ष्य आपको सही उत्तर देगा , यदि लक्ष्य उन मूल्यों / पात्रों को ढूंढना है x
, जो मौजूद नहीं हैं y
।
हालांकि, उपरोक्त अभिव्यक्तियों को लागू करना मुश्किल हो सकता है और वेक्टर की प्रकृति और अभिव्यक्ति में एक्स और वाई की स्थिति के आधार पर अवांछनीय परिणाम दे सकता है। उदाहरण के लिए, यदि:
x <- c(1,1,2,2,3,4)
y <- c(2,3,4)
और लक्ष्य केवल उन अद्वितीय मूल्यों / वर्णों को खोजना है x
, जो वर्तमान में y
या इसके विपरीत नहीं हैं। इनमें से किसी भी अभिव्यक्ति को लागू करना अभी भी सही उत्तर देगा [1] 1
:
union(setdiff(x, y), setdiff(y, x))
जेरोमी एंग्लीम के योगदान के लिए धन्यवाद
या:
difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
difference(y,x)
वर्कहाउस के योगदान के लिए धन्यवाद
setdiff(x,y)
औरsetdiff(y,x)
समान नहीं हैं।