我是 R 新手,想看看是否有更优雅、更快捷的方法来替换向量中的某些数据,当替换是有条件的并且新值基于公式时。只需将公式放入 replace() 中就会出错,因为替换向量的大小(即整个向量的大小)大于替换的数量(即向量的子集)
这个 for 循环有效,但速度很慢:
A <- df$v2/df$v1
for(i in 1:length(A)) {
if (is.na(A[i]) & !is.na(df$v3[i])) {
A[i] <- df$v3[i]/df$v1[i]
}
}
以下不起作用,我理解为什么(替换需要与被替换的对象大小相同),但没有找到比上面的 for 循环更好的解决方案:
A <- replace(A,is.na(A) & !is.na(df$v3),df$v3/df$v1)
它给出以下错误:警告消息:在替换(....要替换的项目数不是替换长度的倍数