0

これはおそらく非常に単純な質問ですが、どこにも答えが見つかりません。私は基本的なデータフレームを持っています:

somedf <- data.frame(ageGroup = c("Under10", "Over10", "Over50", "Over100"), 
                     favColor = c("red", "pink", "purple", "blue"))

      ageGroup favColor
      1  Under10      red
      2   Over10     pink
      3   Over50   purple
      4  Over100     blue

これは機能します:

somedf$ageGroup2 <- ifelse(somedf$ageGroup == "Under10", 1, 2 )

   ageGroup favColor ageGroup2
    1  Under10      red         1
    2   Over10     pink         2
    3   Over50   purple         2
    4  Over100     blue         2

しかし、これはしません:

somedf$ageGroup3 <- ifelse(somedf$ageGroup == "Under10" || 
                           somedf$ageGroup == "Over10" , 3, 4 )


   ageGroup favColor ageGroup2 ageGroup3
     1  Under10      red         1         3
     2   Over10     pink         2         3
     3   Over50   purple         2         3
     4  Over100     blue         2         3

ご覧のとおり、すべての行が最初の行が受け取った値を取ります。ベクトル演算を実行して、列全体の値を一度に設定できると思っていましたifelseが、ここで何が間違っているのでしょうか。複雑な/ネストされたif/else if/elseステートメントでさえ、同じことを行います。

ありがとう!

4

0 に答える 0