R 用另一个向量的连续元素替换一个向量中的NAs
我想用序列中的元素替换向量的NA元素,例如:R 用另一个向量的连续元素替换一个向量中的NAs,r,vectorization,R,Vectorization,我想用序列中的元素替换向量的NA元素,例如: x <- c(1, NA, 5, NA, NA, 2, 12, NA) replace.seq <- -1:-4 # Can assume length(replace.seq) == sum(is.na(x)) goal <- c(1, -1, 5, -2, -3, 2, 12, -4) xPer@akrun: x[is.na(x)] <- replace.seq x[is.na(x)]Per@akrun: x[is.
x <- c(1, NA, 5, NA, NA, 2, 12, NA)
replace.seq <- -1:-4 # Can assume length(replace.seq) == sum(is.na(x))
goal <- c(1, -1, 5, -2, -3, 2, 12, -4)
xPer@akrun:
x[is.na(x)] <- replace.seq
x[is.na(x)]Per@akrun:
x[is.na(x)] <- replace.seq
x[is.na(x)]您可以使用replace
:
x <- replace(x, is.na(x), replace.seq)
x您可以使用replace
:
x <- replace(x, is.na(x), replace.seq)
xx[is.na(x)]谢谢@akrun!我建议您将标题改为“将一个向量中的NAs替换为另一个向量的顺序元素”?只是让它更清楚一点。为了进行比较,zoo::locf
将NA
替换为同一向量中的前瞻性值;“反转向量的顺序将允许回望填充。”卡尔维特霍夫同意,这更清楚。现在已更改,谢谢。@akrun您能帮我解答这个问题吗?x[is.na(x)]Duh,谢谢@akrun!我建议您将标题改为“将一个向量中的NAs替换为另一个向量的顺序元素”?只是让它更清楚一点。为了进行比较,zoo::locf
将NA
替换为同一向量中的前瞻性值;“反转向量的顺序将允许回望填充。”卡尔维特霍夫同意,这更清楚。现在已更改,谢谢。@akrun您能帮我解答这个问题吗?您应该指出,R
将根据需要回收值,因此,如果您的输入向量中replace.seq
中的值少于NA
s,您应该小心您想要做什么。或者:x@Sven真的吗<代码>x[is.na(x)]@Jthorpe是的,真的。在第一个命令之后,x
不包含任何NA
s。尝试xifelse
失败,因为它根据x
中的索引回收replace.seq
的值。它返回c(1,-2,5,-4,-1,2,12,-4)
,其中第一个-2出现是因为它是x
的第二个元素,-4作为第四个元素,-1再次作为第五个元素(循环到第一个),等等。应该指出R
将根据需要循环使用值,因此,如果replace.seq
中的值少于输入向量中的NA
s,那么您应该注意要做什么。或者:x@Sven真的吗<代码>x[is.na(x)]@Jthorpe是的,真的。在第一个命令之后,x
不包含任何NA
s。尝试xifelse
失败,因为它根据x
中的索引回收replace.seq
的值。它返回c(1,-2,5,-4,-1,2,12,-4)
,其中第一个-2出现是因为它是x
的第二个元素,-4作为第四个元素,-1再次作为第五个元素(循环到第一个),等等。谢谢,如果你想生成一个新的向量,这会更好。谢谢,如果你想生成一个新的向量,这会更好。