2017-11-22 5 views
-4

"Site"という別の列に基づいてデータセット(data2)に新しい列(Environment)が作成されましたが、 "1"、 "2"、 "4" 「3」と「5」は沼地に対応し、「8」は河川敷に対応する。私のコードは次のとおりです。ifelse文でエラーが発生しました

data2$Environment<-as.factor(data2$Environment<-ifelse(data2$Site==c("1", "2", "4"), "Stream", ifelse(data2$Site==c("8"),"River" ,"Swamp"))) 

新しい環境列を通過すると、誤った名前が間違ったサイトに表示されます。たとえば、Riverに対応する8の代わりに、Streamに対応することもあります。これは、異なる組み合わせに対しても同様に他の要因で発生します。 なぜこれが起こっていますか?どんな助けでも大歓迎です。

+2

最小限の再現可能な例を共有してください。私たちは 'data2'を持っていないのであなたの問題を再現することはできません。 – josliber

答えて

0

どのようにしてdata2 $ siteのc( "1"、 "2"、 "4")値のいずれかを調べることができますか?

間違いdata2$Site == c("1", "2", "4")によって、あなたは%で%を使用する必要がありません。

data2$Site %in% c("1", "2", "4") 
再現性の例に

レッツ仕事:

data(iris) 

このよく知られたデータセットがかかる種という名前の列を、持っています3値:virginica、setosa、およびversicolor。 YES再び

> 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 

私は私の種がsetosaかvirginicaのいずれかであるかどうかを確認

は、最初の50は、YESを返す必要があり、第二50 NO、そして最後の50:これは完全な列です。

> 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 

最初と最後の50件のレコードがTRUE - FALSEの交流として返されます。我々は間違った方法を確認するときに何が起こるか見てみましょう。正しい方法を試してみましょう:

> 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 

これは項目番号1です。項目番号2は、あなたのような何かをやっている、ではありません:これは危険でさえあるかもしれない

data2$Environment<-as.factor(data2$Environment<-ifelse(blabla)) 

、それには何のコメント、私はこのようなネストされた割り当てをやったことがありません。私のコメントは:data2$Environment<-as.factor(ifelse(blabla))だけではないのですか?それ以外では、3つの条件を処理するネストされたifelseは正しいです。ただ、比較のために、私の例では、同等のは次のようになります。したがって

> 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" 

あなただけの%で%にあなたの二重の等号を変更する場合は、良いことがあります。

関連する問題