私はRを使用していますが、回答は検索されていますが、同様の質問が表示されていますが、特定の問題では機能していません。サプリ機能でNAを無視する
私のデータセットでは、NA
をプレースホルダとして使用しようとしています。なぜなら、私が分析の一部をしたら戻ってくるからです。私はすべての計算をもしNA
が本当にそこになかったら。
Error in if ((x) > test) { : missing value where TRUE/FALSE needed
、それはsapply機能と間違って何かです:
は、ここで例のデータテーブル私はエラーを取得しています
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"
と私の問題です。どのようにそれらを無視するための任意のアイデアNA
の?私がNA
の前にあった場所をすべて挿入することができたら、私はna.omit
を試してみましたが、どうやってそれを行うのか分かりません。
xがNAの場合、NAを返すsapply関数に別のif文を追加するだけではどうですか?また、関数のどこにでも 'browser()'を置くと、次回に実行するときにその場所で一時停止します。 –
お返事ありがとうございます!しかし、私はまだ同じエラーが発生しているので、私はこの権利を行ったかどうかはわかりません。ここで私のコードtest1 < - sapply(L、function(x)if((x)== NA){NA} else if((x)> test){1} else {0} )です。今:if((x)== NA){:見つからない値、TRUE/FALSEが必要な場合 – Tim
'is.na(x)'を使ってチェックする必要があります。 'x == NA'はNAを返す... – Tommy