我正在使用R并搜索了一个答案,但是尽管我看到了类似的问题,但它不适用于我的特定问题。
在我的数据集中,我尝试将NA
用作占位符,因为一旦完成部分分析,我将返回到它们,因此,我希望能够像NA
一样进行所有计算。 s并不是真的在那里。
这是我的示例数据表的问题
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
的正确位置,我会尝试使用ojit_code,但是我不确定该怎么做。 最佳答案
这句话很奇怪:
test1 <- sapply(L,function(x) if((x)> test){1} else {0})
尝试:
test1 <- ifelse(is.na(L), NA, ifelse(L > test, 1, 0))
关于function - 忽略NA在sapply函数中的作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6499905/