2016-02-27 41 views
0

我希望問題能夠正確發佈。類似的問題面臨着here,即使它與預期結果略有不同。 我想創建與10名男子和10名婦女20行數據幀:向data.frame添加條件屬性

e6 <- data.frame(20) 
e6 <- rep(c("man", "woman"), c(10, 10)) 
e6 
[1] "man" "man" "man" "man" "man" "man" "man" "man" 
[9] "man" "man" "woman" "woman" "woman" "woman" "woman" "woman" 
[17] "woman" "woman" "woman" "woman" 

現在我想創建一個列e6$answer其中10人之間,其中8人說「是」,其中2 「沒有」。在10名女性中:其中3人說「是」,7人說「是」。我嘗試使用在帖子頂部的鏈接建議的方法:

e6$answer <- ifelse(e6 == "man", rep(c("yes", "no"), c(8, 2)), 
      rep(c("yes", "no"), c(3, 7))) 

不幸的是,我的嘗試返回一個錯誤。可能我在做類錯誤。

Warning message: 
In e6$answer <- ifelse(e6 == "man", rep(c("yes", "no"), c(8, 2)), : 
    Coercing LHS to a list 

非常感謝您的耐心等待。

回答

2

在你的例子中,e6是一個字符向量(見class(e6)),而不是數據幀。因此,ifelse強制它列表。嘗試

e6 <- data.frame(gender = rep(c("man", "woman"), each=10)) 
e6$answer <- ifelse(e6 == "man", rep(c("yes", "no"), c(8, 2)), 
      rep(c("yes", "no"), c(3, 7)))