我正试图找到一种方法将NA值插入到R中的向量/矩阵中。我使用了一些操作技巧,如:
values = *expression* #assume values is a populated vector
values = (values %% 2 == 0)(values/2) + (values%%2 == 1)*(3*values + 1)
所以,这有条件地根据它们的值来操纵向量的条目,但是我不确定在插入NA值时如何做这种类型的方法,因为类似values = (values %% 2 == 0)*(values) + (values%%2 == 1)*(NA)
之类的东西除了NA之外什么都不会产生矢量。
我发现我可以做以下事情:
for(i in 1:length(values))
{
if(values[i] %% 2 == 1){values[i] = NA}
}
但是我希望能像前面的例子一样更简洁。有什么想法吗?
答案 0 :(得分:1)
v = (values %% 2 == 0)*(values/2) + ifelse(values%%2 == 1, NA, 0)
实际上写起来更安全:
v = ifelse(values %% 2 ==0, values/2, 0) + ifelse(values%%2 == 1, NA, 0)
答案 1 :(得分:1)
values[values %% 2 == 1] <- NA
答案 2 :(得分:1)
你不需要使用技巧和总结任何东西,这就足够了:
values = ifelse(values %% 2 == 0, values/2, NA)