我正在使用 R 并四处寻找答案,但虽然我看到过类似的问题,但它对我的具体问题不起作用。
在我的数据集中,我尝试使用NA
是作为占位符,因为一旦我完成部分分析,我就会返回到它们,因此,我希望能够进行所有计算,就好像NA
并不真的在那里。
这是我的示例数据表的问题
ROCA = c(1,3,6,2,1,NA,2,NA,1,NA,4,NA)
ROCA <- data.frame (ROCA=ROCA) # converting it just because that is the format of my original data
#Now my function
exceedes <- function (L=NULL, R=NULL, na.rm = T)
{
if (is.null(L) | is.null(R)) {
print ("mycols: invalid L,R.")
return (NULL)
}
test <-(mean(L, na.rm=TRUE)-R*sd(L,na.rm=TRUE))
test1 <- sapply(L,function(x) if((x)> test){1} else {0})
return (test1)
}
L=ROCA[,1]
R=.5
ROCA$newcolumn <- exceedes(L,R)
names(ROCA)[names(ROCA)=="newcolumn"]="Exceedes1"
我收到错误:
Error in if ((x) > test) { : missing value where TRUE/FALSE needed
正如你们所知,sapply 函数出了问题。关于如何忽略这些的任何想法NA
的?我会尝试na.omit
如果我能让它插入所有NA
就在他们之前的位置,但我不知道该怎么做。