/ / Jak znaleźć pozycje wektora w R w porównaniu z innymi wektorami - r

Jak znaleźć pozycje wektora w R w porównaniu z innymi wektorami - r

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 № 1

Myś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