【发布时间】:2018-05-15 09:35:32
【问题描述】:
这似乎是基本的,但我不知道如何解决这个问题。我有一种情况,我正在编写一个 for 循环,在某个阶段它给了我这个错误,“替换有 3 行,数据有 4”
在我的 for 循环中,我每 4 行写入数据,并且在某些时候替换数据只有 3 个值。在这种情况下,我希望第 4 个值应该用 NA 填充。所以基本上长度为 4,如果少说 2,则 2 个值用 NA 填充。我怎样才能得到这个。
错误信息示例 -
a1 <- data.frame(matrix(NA,nrow = 4,ncol = 0))
v1 <- c(1:3)
a1[,"b1"] <- v1
所以一些代码将 v1 转换为长度 4 并将最后一个值设为 NA 以便我能够编写它。
【问题讨论】:
-
您可以尝试将最后一行的v1替换为
ifelse(length(v1) < 4, c(v1, rep(NA, 4 - length(v1)), v1)) -
length(v1) <- nrow(a1); a1[,"b1"] <- v1 -
@kath,谢谢你的回答,我相信括号里有错字,应该是
ifelse(length(v1) < 4, v1 <- c(v1,rep(NA, 4 - length(v1))), v1)。不知何故,它没有返回 NA 没有 **v1 的 4 个值 -
@jogo,谢谢你的回答,但是正如我所提到的,这是 forloop 的一部分,因此 nrow 会不断变化,不会满足原来的要求。
-
a1$v1 <- v1[1:4]
标签: r for-loop vector replace na