在管道内 case_when 中找不到对象
Object Not Found in case_when within pipe
我有一个如下所示的数据框:
gov1rlc gov2rlc gov3rlc gov1vote gov2vote gov3vote
<int> <int> <int> <dbl> <dbl> <dbl>
3 2 NA 24.35 1.04 0
2 3 2 NA 24.35 1.04
3 2 NA 24.35 1.04 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
此时,我想计算左翼政党的投票份额(gov1rlc、gov2rlc、gov3rlc 等于 3),为此我使用以下代码:
d <- d %>% mutate(left_share=case_when(gov1rlc==3&gov2rlc==3&gov3rlc==3~gov1vote+gov2vote+gov3vote,
gov1rlc==3&gov2rlc==3&gov3rlc!=3~gov1vote+gov2vote,
gov1rlc==3&gov2rlc!=3&gov3rlc==3~gov1vote+gov3vote,
gov1rlc==3&gov2rlc!=3&gov3rlc!=3~gov1vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc!=3~0,
gov1rlc!=3&gov2rlc==3&gov3rlc==3~gov2vote+gov3vote,
gov1rlc!=3&gov2rlc==3&gov3rlc!=3~gov2vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc==3~gov3vote))`
然而,之后我得到 Error in mutate_impl(.data, dots) : object 'gov1rlc' not found
,考虑到我在管道中,并且相同的代码在另一台计算机上工作,这真的很奇怪。
如果我在每个对象前使用 d$
运算符,将显示以下消息:Error in mutate_impl(.data, dots) : NAs are not allowed in subscripted assignments
.
简单地说:正在发生什么,正在发生什么?
所以这不是对您感兴趣的问题的直接回答,但您似乎正试图对 data.frame 中的各列求和。如果我们可以假设 NA 值指的是右股投票,那么维护求和使用类似的东西会更加灵活和简单:
df %>%
rowwise() %>%
mutate(vote_share = sum(gov1vote, gov2vote, gov3vote, na.rm = T))
这应该会生成与您当前代码相同的信息,并且它在您要使用的 tidyverse 框架内。我赞同 Konrad 的评论,即您也将 tidyverse 更新为最新版本。我不相信 rowwise()
是最近才添加的。
我有一个如下所示的数据框:
gov1rlc gov2rlc gov3rlc gov1vote gov2vote gov3vote
<int> <int> <int> <dbl> <dbl> <dbl>
3 2 NA 24.35 1.04 0
2 3 2 NA 24.35 1.04
3 2 NA 24.35 1.04 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
此时,我想计算左翼政党的投票份额(gov1rlc、gov2rlc、gov3rlc 等于 3),为此我使用以下代码:
d <- d %>% mutate(left_share=case_when(gov1rlc==3&gov2rlc==3&gov3rlc==3~gov1vote+gov2vote+gov3vote,
gov1rlc==3&gov2rlc==3&gov3rlc!=3~gov1vote+gov2vote,
gov1rlc==3&gov2rlc!=3&gov3rlc==3~gov1vote+gov3vote,
gov1rlc==3&gov2rlc!=3&gov3rlc!=3~gov1vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc!=3~0,
gov1rlc!=3&gov2rlc==3&gov3rlc==3~gov2vote+gov3vote,
gov1rlc!=3&gov2rlc==3&gov3rlc!=3~gov2vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc==3~gov3vote))`
然而,之后我得到 Error in mutate_impl(.data, dots) : object 'gov1rlc' not found
,考虑到我在管道中,并且相同的代码在另一台计算机上工作,这真的很奇怪。
如果我在每个对象前使用 d$
运算符,将显示以下消息:Error in mutate_impl(.data, dots) : NAs are not allowed in subscripted assignments
.
简单地说:正在发生什么,正在发生什么?
所以这不是对您感兴趣的问题的直接回答,但您似乎正试图对 data.frame 中的各列求和。如果我们可以假设 NA 值指的是右股投票,那么维护求和使用类似的东西会更加灵活和简单:
df %>%
rowwise() %>%
mutate(vote_share = sum(gov1vote, gov2vote, gov3vote, na.rm = T))
这应该会生成与您当前代码相同的信息,并且它在您要使用的 tidyverse 框架内。我赞同 Konrad 的评论,即您也将 tidyverse 更新为最新版本。我不相信 rowwise()
是最近才添加的。