我正在尝试将 rowwise
和 mutate
用于可以返回NA值的函数,但是收到错误 . 考虑这个人为的例子(显然不是rowwise的情况,但说明了错误):
这有效:
library(dplyr)
data.frame(k=rnorm(10)) %>% mutate(l = ifelse(k > 0, 1, NA))
k l
1 -1.40223573 NA
2 1.47581873 1
3 0.35938746 1
4 0.87240448 1
5 -0.61991535 NA
6 -1.88152820 NA
7 0.25837350 1
8 -0.02250385 NA
9 0.92757943 1
10 0.49023792 1
但是这给出了一个错误:
library(dplyr)
data.frame(k=rnorm(10)) %>% rowwise() %>% mutate(l = ifelse(k > 0, 1, NA))
Error: incompatible types, expecting a numeric vector
1 回答
Note: 我已就此答案的结果中的错误提交了github issue #1448 .
Update Oct 29, 2015: 看起来
rowwise()
中的这个错误已修复 . 查看上面的链接了解详细信息 .首先,没有理由将其作为行式操作 .
就错误而言,
NA
属于逻辑类型 . 在此行操作中,您需要在ifelse()
的调用中使用NA_real_
. 或者正如Ben Bolker在下面的评论中指出的那样,你可以用as.numeric()
包装ifelse()
.请注意,您也可以使用整数,如
但是你似乎不能在行式操作中混合使用逻辑和实数/整数 .