订阅的作业中不允许使用NA

Leo*_*rge 16 r

我有一个简单的问题,但我无法掌握克服它的逻辑.

我有数字向量与NA,并希望对它们应用条件相关的操作.

一个类似于我的问题的简单例子是:

x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]
Run Code Online (Sandbox Code Playgroud)

它返回错误"在订阅的作业中不允许使用NA",所以我想知道什么是合理的解决方案,因为分别运行每个属性按预期工作.

我希望得到预期的结果:

[1]  10  20  3  4 NA  60  70  8
Run Code Online (Sandbox Code Playgroud)

优选地,不必进行for循环,因为该操作已经处于用于空建模的函数中,其具有需要很长时间的大量迭代.

先谢谢你,莱昂纳多

vpi*_*pkt 12

您的逻辑还需要排除子集中的NA.请参阅以下示例.注意,子集向量在x被修改之前被存储起来.

x <- c(1,3,5,7,NA,2,4,6)
subset1 <- x>=5 & !is.na(x)
subset2 <-  x<5 & !is.na(x)

x[subset1] <- which(subset1)
x[subset2] <- 10*which(subset2)
Run Code Online (Sandbox Code Playgroud)