Я использую 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
там, где они были раньше, но я не уверен, как это сделать.