2017-04-04 3 views
0

J'ai deux vecteurs avec des éléments différents, disons x=c(1,3,4), y= c(2,9)Rangs et l'identification des éléments r

Je veux un vecteur de gammes qui me identifie les éléments du vecteur x avec 1 et ceux de y avec 0, soit

(1,2,3,4,9) -----> (1,0,1,1,0)

Comment pourriez-vous obtenir le vecteur des zéros et des uns (1,0 , 1,1,0) dans r?

Merci

+0

Cela semble être hors sujet, car il traite principalement des programmes de R. –

Répondre

0

premier définiriez-vous un fonction qui fait cela

blah <- function(vector, 
       x=c(1,3,4), 
       y= c(2,9)){ 
outVector <- rep(x = NA, times = length(vector)) 
outVector[vector %in% x] <- 1 
outVector[vector %in% y] <- 0 
return(outVector) 
} 

alors vous pouvez utiliser la fonction:

blah(vector = 1:9) 
blah(vector = c(1,2,3,4,9)) 

vous pouvez également modifier la valeur de x & y

blah(vector = 1:10,x = c(1:5*2), y = c((1:5*2)-1)) 
1

L'option suivante est sûrement pas numériquement optimale, mais il est le plus simple et une directe:

a<-c(1,2,3,4) 
b<-c(5,6,7,8) 
f<-function(vec0,vec1,inp) 
{ 
    out<-rep(NA,length(inp))  #NA if input elements in neither vector 

    for(i in 1:length(inp)) 
    {          #Logical values coerced to 0 and 1 at first, then 
    if(sum(inp[i]==vec0))(out[i]<-0); #summed up and if sum != 0 coerced to logical "TRUE" 
    } 

    for(i in 1:length(inp)) 
    { 
    if(sum(inp[i]==vec1))(out[i]<-1); 
    } 

    return (out) 
} 

fonctionne très bien:

> f(vec0=a,vec1=b,inp=c(1,6,4,8,2,4,8,7,10)) 
[1] 0 1 0 1 0 0 1 1 NA