2017-09-26 2 views
0

Je suis nouveau à R. Je suis en train d'ajouter des valeurs à partir d'une trame de données comme celui-ci ici est la trame de données tu:Comment ajouter des chaînes à un vecteur dans R?

  t  u 
1  What LOL 
2 Whatever ALL 
3 Works OLO 
4  What POLO 
5 Whatever CHOLO 
6 Whatever LOLO 
7 Works  C 
8 Whatever  D 

Je veux imprimer les valeurs de u pour lequel t est « Whatever »

a <- vector() 
for(i in 1:8) { 
if(tu$t[i] == 'Whatever') { 
    a<-c(a,tu$u[i]) 
}} 

Lorsque l'exécution est terminée, je reçois la valeur de print(a) comme un type entier vecteur au lieu d'un vecteur d'un ensemble de chaînes. "ALL CHOLO LOLO D"

La sortie est int [1:4] 1 3 6 4 Quelqu'un peut-il expliquer ce qui se passe? PS: Ignorer les valeurs de u: P

+0

s'il vous plaît inclure un échantillon de vos données –

+0

je l'ai mentionné la trame de données dans le question – Rawshn

+1

Oui vous l'avez fait, mais cela ne nous parle pas de la classe de vos colonnes. Que retourne 'spply (tu, class)'? –

Répondre

1

d'abord convertir vos colonnes en caractères

tu$t <- as.character(tu$t) 
tu$u <- as.character(tu$u) 

Et puis exécutez à nouveau le code

+0

Cela a fonctionné! Je vous remercie! – Rawshn

+0

Pas de problème, si cela a fonctionné il suffit de marquer ma réponse comme correcte –

+0

auriez-vous la gentillesse de m'expliquer pourquoi cela fonctionne dans votre réponse? – Rawshn