【发布时间】:2014-02-18 20:03:19
【问题描述】:
好的,我很接近。一切正常,但 compound 的最后一个循环我被数据类型问题挂断了。随心所欲地复制并运行。
x <- c(1:12)
dim(x) <- c(3,4)
x[2,2] <- NA
x[3,3] <- NA
colnames(x) <- c("A","B","C","D")
x
newframe <- data.frame(matrix(0, ncol = 4, nrow = 3))
for (i in 1:3)
for (j in 1:4)
{ newframe[i,j] <- (1 -1*(is.na(x[i,j]))) }
newframe <- as.matrix((newframe))
newframe
compound <- data.frame(matrix(0, ncol = 4, nrow = 3))
for (i in 1:3)
for (j in 1:4 )
{ compound[i,j] <- (as.numeric(x[i,j])*(as.numeric(newframe[i,j])))
}
compound
我正在尝试为空实例创建一个指示器变量,并使用它来创建一个复合变量,该变量将在为空时将原始变量归零并闪烁指示器。
【问题讨论】:
-
你真的要测试整列是不是
NA?请提供一个可重现的例子。 -
OP,关于您的代码 - 尝试运行
NA == NA,然后阅读?is.na -
一步一步。你甚至还没有了解到
x==NA总是返回NA。在发布此类基本内容之前,您真的应该阅读 R 教程。 -
我写了伪代码,先生们,所以对 R 语法的批评是不恰当的。我已将其更改为上面的 is.na 以免混淆。目标是仅当向量的实例为 NA 时才创建虚拟对象,而不是整个对象。
-
将在上午发布答案 # 创建数据 x