我在R中遇到此错误。我正在使用一个数据库,其中我的NA值称为“#VALOR N / A”,所以我做了一个简单的函数来查看我拥有多少个该值。>
estavencido <- function(a){
count = 0
for(i in 2:367){
if(a[i]== "# VALOR N/D"){
count = count+1
}
}
return(count)
}
但是当我使用该函数时,出现错误,并且看到data [i] ==“#VALOR N / D”返回TRUE / FALSE值,所以我不知道为什么会这样。
答案 0 :(得分:1)
如果向量a
如下所示:
a <- c("# VALOR N/A", "A", "B", "# VALOR N/A")
然后这将起作用:
estavencido <- function(a){
count = 0
for(i in seq_along(a)){
if(a[i] == "# VALOR N/A"){
count = count+1
}
}
return(count)
}
estavencido(a)
如果i
大于向量的长度,则会出现问题,在这种情况下将返回NA
和TRUE
都不是的FALSE
。如此无法预料的后果就是为什么您应该在seq*
循环中使用for
函数之一的原因。
但是,您制作的循环并不是您应该如何在R
中编写的循环。这样会更好:
sum(grepl("# VALOR N/A", a))
答案 1 :(得分:0)
不是专家,但也许是这样的:
a <- table(a)
a[names(a)=="VALOR N/D"]