循环的R给出:if(is.na(x))返回(0)else返回(符号(x))中的错误:参数为零



我正在通过大数据集循环,并隔离了一些返回错误的组:

if(is.na(x((返回(0(else return(sign(x((的错误: 参数为零

其他帖子表明,这表明存在无效。但是,

is.null(block_of_troublesome_data( [1] false

手动检查DF也没有显示任何NA值(这很有意义,因为我以前在整个块上运行了Na.omit((。

我想念什么?

附加信息:这是循环正在工作的DF:

数据

a tibble:120 x 11

组:ecoregion_code [1]

ecoregion_code loc_major_basin lake_id lake_name sample_date_date y m doy value_ft season_code季节 1 40 7010103 01-0022-00 Island 1999-07-29 1999 7 210 5.610236 2夏季 2 40 7010103 01-0022-00 Island 2000-06-18 2000 6 170 6.496063 1 Spring 3 40 7010103 01-0022-00 Island 2000-07-04 2000 7 186 6.496063 2夏季 4 40 7010103 01-0022-00 Island 2000-08-12 2000 8 225 6.496063 2夏季 5 40 7010103 01-0022-00 Island 2000-08-26 2000 8 239 6.496063 2夏季 6 40 7010103 01-0022-00 Island 2000-09-16 2000 9 260 6.496063 3秋季 7 40 7010103 01-0022-00 Island 2001-06-03 2001 6 154 5.511811 1春季 8 40 7010103 01-0022-00 Island 2001-06-10 2001 6 161 5.511811 1春季 9 40 7010103 01-0022-00 Island 2001-06-17 2001 6 168 4.986877 1 Spring10 40 7010103 01-0022-00 Island 2001-10-18 2001 10 291 6.496063 3秋季

...还有110行

和'if(is.na(x((返回(0(else返回(sign(x(('

的输出

if(is.na(data((返回(0(else返回(符号(数据(( Math.data.frame中的错误(数据(: 数据框中的非数字变量:lake_idlake_namesample_dateseason 另外:警告消息: 在if(is.na(data((返回(0(else返回(符号(数据((中: 条件的长度> 1,只有第一个元素将被使用

if(length(data(== 0(0 else if.na(x(0其他符号(数据( 错误:" if(length(data(== 0(0的意外符号0 else if.na"

所有零长度向量不是NULL,因此您可能需要测试length(x)

# instead of ...
if (is.na(x)) return(0) else return(sign(x))
# try ...
if (length(x)==0) 0 else if is.na(x) 0 else sign(x)
# or equivalently ...
if(length(foo)==0 || is.na(foo)) 0 else sign(foo)

(您可能需要或可能不需要return(...),这是另一个问题。(

测试案例:

foo <- numeric(0)
is.null(foo) # FALSE
if(length(foo)==0) 0 else if(is.na(foo)) 0 else sign(foo)  # 0
if(length(foo)==0 || is.na(foo)) 0 else sign(foo)  # 0

相关内容

  • 没有找到相关文章

最新更新