Если мы рассмотрим общие сценарии, в которых может быть выбрано это исключение, доступ к свойствам с объектом вверху.
Пример:
string postalcode=Customer.Address.PostalCode;
//if customer or address is null , this will through exeption
здесь, если адрес имеет значение null, то вы получите NullReferenceException.
Итак, в качестве практики мы всегда должны использовать проверку нуля, прежде чем обращаться к свойствам в таких объектах (особенно в общих)
string postalcode=Customer?.Address?.PostalCode;
//if customer or address is null , this will return null, without through a exception
Возможно, будет более умный способ, но
intersect(intersect(a,b),c)
выполнит задание.
EDIT: более умно и удобнее, если у вас много аргументов:
Reduce(intersect, list(a,b,c))
intersect_all <- function(a,b,...){
all_data <- c(a,b,...)
require(plyr)
count_data<- length(list(a,b,...))
freq_dist <- count(all_data)
intersect_data <- freq_dist[which(freq_dist$freq==count_data),"x"]
intersect_data
}
intersect_all(a,b,c)
ИЗМЕНЕНИЕ ОБНОВЛЕНИЯ Простейший код
intersect_all <- function(a,b,...){
Reduce(intersect, list(a,b,...))
}
intersect_all(a,b,c)
Хороший ответ уже, но есть несколько других способов сделать это:
unique(c[c%in%a[a%in%b]])
или,
tst <- c(unique(a),unique(b),unique(c))
tst <- tst[duplicated(tst)]
tst[duplicated(tst)]
Вы можете явно опустить unique
если вы знаете, что в a
, b
или c
нет повторяющихся значений.