说我有
a <- c(0:3, NA)
我想把0替换成1,把1替换成0,也就是说,我想要a <- c(1, 0, 2, 3, NA),下面的代码因为NA而不起作用
a <- c(1, 0, 2, 3, NA)
NA
> a[a<2] <- 1- a[a<2] Error in a[a < 2] <- 1 - a[a < 2] : NAs are not allowed in subscripted assignments
我知道如果我们使用函数的话,我们可以使用na.rm = T。在我的例子中,如何添加这样的参数?
na.rm = T
ubof19bj1#
只需使用%in%将值0和1作为子集,并从1-%in%中减去,对于NA值返回FALSE,对于与rhs匹配的值仅返回TRUE,然后减去1,使1 - 1 = 0,并且1 - 0 = 1
%in%
a[a %in% 0:1] <- 1 - a[a %in% 0:1]
> a [1] 1 0 2 3 NA
或者如果我们想用OP的代码
a[a < 2 & !is.na(a)] <- 1 - a[a < 2 & !is.na(a)]
1条答案
按热度按时间ubof19bj1#
只需使用
%in%
将值0和1作为子集,并从1-%in%
中减去,对于NA
值返回FALSE,对于与rhs匹配的值仅返回TRUE,然后减去1,使1 - 1 = 0,并且1 - 0 = 1或者如果我们想用OP的代码