R中的if和ifelse,使用了多个元素并嵌套失败



我最近从r开始,我遇到了if和ifelse的问题。

这是我尝试过的

two_d6 <- function(n)
{
random_numbers <- matrix(
sample(6, 2 * n, replace = T),
nrow = 2
)
colSums(random_numbers)
}  

这是一个生成随机数的函数,没有问题


scores <- two_d6(10)
for(i in 1:length(scores))
{ 

if(scores[i] %in% c(2,3,12))
{
game_statues <- F
point <- NA
} else if(scores[i] %in% c(7,11))
{ 
game_statues <- T
point <- NA
} else
{
game_statues <- NA
point <- scores
}
}
game_table <- data.frame(game_statues = game_statues, point = point, 
score = scores) ; game_table

game_statues point score
1            NA    10    10
2            NA     7     7
3            NA    10    10
4            NA     9     9
5            NA     7     7
6            NA     5     5
7            NA     5     5
8            NA    11    11
9            NA     7     7
10           NA     4     4 

不起作用,似乎只有最后的"else"工作的一部分。

Then I try:

ifelse(scores %in% c(2,3,12), ((game_statues <- F) & (point <- NA)), 
ifelse(scores %in% c(7,11), ((game_statues <- T) & (point <- NA)),  
((game_statues <- NA ) & ( point <- scores))))
[1]    NA    NA    NA    NA    NA FALSE    NA    NA    NA    NA
game_table <- data.frame(game_statues = game_statues, point = point, 
score = scores) ; game_table
game_statues point score
1            NA     8     8
2            NA     9     9
3            NA     7     7
4            NA     8     8
5            NA     6     6
6            NA     2     2
7            NA     8     8
8            NA    10    10
9            NA     7     7
10           NA     4     4

似乎与if函数的原因相同。

我看不出有什么问题。你能告诉我如何用这两个功能来改进,得到合适的表格吗?谢谢!

您可以使用ifelse作为-

game_statues <- ifelse(scores %in% c(2,3,12), FALSE, 
ifelse(scores %in% c(7,11), TRUE, NA))
point <- scores
point[!is.na(game_statues)] <- NA
game_table <- data.frame(game_statues, point, scores) 
game_table
#   game_statues point scores
#1            NA     5     5
#2         FALSE    NA     2
#3            NA     8     8
#4            NA     4     4
#5          TRUE    NA     7
#6          TRUE    NA     7
#7          TRUE    NA     7
#8            NA     8     8
#9            NA     6     6
#10           NA     6     6

最新更新