我希望问题正确发布。类似的问题面临here,即使它与预期结果略有不同。 我想创建一个包含10名男性和10名女性的20行数据框:
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人说&#34;是&#34;其中2个&#34;不&#34;。在10名女性中间:其中3名说“是”&#34;其中7人说&#34;是&#34;。我尝试使用帖子顶部链接中建议的方法:
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
非常感谢您的耐心等待。
答案 0 :(得分: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)))