Wie können Sie überprüfen, dass data2 $ Site einen der c ("1", "2", "4") Werte annimmt?
Definitiv nicht von data2$Site == c("1", "2", "4")
, sollten Sie% in% verwenden:
data2$Site %in% c("1", "2", "4")
Lasst uns zusammen arbeiten auf einem reproduzierbaren Beispiel:
data(iris)
Diese bekannte Datensatz hat eine Spalte Spezies genannt, die nimmt 3 Werte: virginica, setosa und versicolor. Dies ist die vollständige Spalte:
> iris$Species
[1] setosa setosa setosa setosa setosa setosa setosa setosa setosa
[10] setosa setosa setosa setosa setosa setosa setosa setosa setosa
[19] setosa setosa setosa setosa setosa setosa setosa setosa setosa
[28] setosa setosa setosa setosa setosa setosa setosa setosa setosa
[37] setosa setosa setosa setosa setosa setosa setosa setosa setosa
[46] setosa setosa setosa setosa setosa versicolor versicolor versicolor versicolor
[55] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor
[64] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor
[73] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor
[82] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor
[91] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor
[100] versicolor virginica virginica virginica virginica virginica virginica virginica virginica
[109] virginica virginica virginica virginica virginica virginica virginica virginica virginica
[118] virginica virginica virginica virginica virginica virginica virginica virginica virginica
[127] virginica virginica virginica virginica virginica virginica virginica virginica virginica
[136] virginica virginica virginica virginica virginica virginica virginica virginica virginica
[145] virginica virginica virginica virginica virginica virginica
Wenn ich überprüfen, ob meine Spezies ist entweder setosa oder virginica, die ersten 50 sollte JA zurückkehren, die zweite 50 NEIN, und die letzten 50 erneut YES. Mal sehen, was passiert, wenn wir die falsche Art und Weise überprüfen:
> iris$Species == c('virginica','setosa')
[1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
[18] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
[35] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
[52] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[69] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[86] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[103] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
[120] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
[137] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
Die ersten und letzten 50 Datensätze zurückgegeben werden als TRUE-FALSE abwechselnd. Lassen Sie uns den richtigen Weg gehen:
> iris$Species %in% c('virginica','setosa')
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[18] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[35] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
[52] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[69] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[86] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
[103] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[120] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[137] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
Das ist also Artikel Nummer eins. Artikelnummer zwei ist, tun Sie so etwas wie:
data2$Environment<-as.factor(data2$Environment<-ifelse(blabla))
Dies sogar gefährlich sein könnte, aber kein Kommentar über das, ich habe noch nie eine verschachtelte Zuordnung wie dies getan. Mein Kommentar ist: Warum nicht einfach ? Ansonsten ist Ihr verschachteltes ifelse, um 3 Bedingungen zu kümmern, korrekt. Nur zum Vergleich, in meinem Beispiel wäre die äquivalent sein:
> ifelse(iris$Species %in% c('virginica'),'vi', ifelse(iris$Species %in% c('setosa'),'se', 've'))
[1] "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se"
[21] "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "se"
[41] "se" "se" "se" "se" "se" "se" "se" "se" "se" "se" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve"
[61] "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve"
[81] "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve" "ve"
[101] "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi"
[121] "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi"
[141] "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi" "vi"
Daher, wenn Sie nur Ihre Doppel Gleiches% in% 's ändern, sollten Sie gut sein.
Bitte teilen Sie ein reproduzierbares Beispiel. Wir haben keine Daten2, daher können wir Ihr Problem nicht reproduzieren. – josliber