【发布时间】:2011-06-27 22:58:32
【问题描述】:
我正在使用 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 插入它们之前的位置,但我不知道该怎么做。
【问题讨论】:
-
为什么不在 x 为 NA 时返回 NA 的 sapply 函数中添加另一个 if 语句?此外,如果您将
browser()放在函数中的任何位置,下次运行时它将在该位置暂停。 -
感谢您的回复!但是,我不确定我是否做对了,因为我仍然遇到同样的错误。这是我的代码 test1 test){1} else {0} ) 现在错误是: if ((x) == NA) { 中的错误:需要 TRUE/FALSE 的缺失值
-
您必须使用
is.na(x)来检查它。x == NA返回 NA...