Wiem, że wydaje się to banalne, ale przypuśćmy, że mam wektor v taki, że:
v <- 20:50
i wektor s, taki, że:
s <- c(30, 36, 37, 58)
Czy istnieje sposób na porównanie dwóch wektorów tak, aby uzyskać pozycje wartości "v", które są równe wartościom "s"? Byłoby to uogólnienie:
v[v==30]
ale z wszystkimi wartościami s. Niektórzy lubią:
v[v==s]
Odpowiedzi:
3 dla odpowiedzi № 1Myślę, że chcesz po prostu coś takiego, aby uzyskać pozycje v
które są w s
.
which(v %in% s)
# [1] 11 17 18
Jeśli wartości są zawsze unikalne, możesz utworzyć nazwany wektor, który będzie pasował do wartości.
setNames(which(v %in% s), s[s %in% v])
# 30 36 37
# 11 17 18
0 dla odpowiedzi nr 2
unlist(sapply(s, function(x) v[v==x]))
Wynik:
> v <- 20:50
> s <- c(30, 36, 37, 58)
> unlist(sapply(s, function(x) v[v==x]))
[1] 30 36 37