2016-02-27 45 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)))