dplyr:突变调用深度"评估错误"

时间:2018-02-19 23:04:57

标签: r neural-network dplyr

我正在处理口袋妖怪(download)(web-link)的数据集。我试图将一列分类变量转换为int矢量表示,以准备创建神经网络。我的code is here。我做了一个函数来做1-of-(C-1)效果编码:

numerify_categorical <- function(categorical) {
      uniq <- unique(categorical)
      sorter <- lapply(uniq, function(x) {
        rtn <- integer(length(uniq)); 
        rtn[x] <- 1; 
        if(as.numeric(x) == length(rtn))
          rep(-1, length(rtn))
        else
          rtn
      })
      names(sorter) <- uniq
      return(sorter[categorical])
}

当我自己测试它时,它似乎有效 - 它将返回一个具有正确值的向量列表。但是,当我尝试在我的mutate调用中使用它时,我突然收到以下错误:

Error in mutate_impl(.data, dots) : 
      Evaluation error: missing value where TRUE/FALSE needed.

我在此错误上调用了traceback()并找到了更多详细信息。具体来说,错误源于以下dplyr mutate调用,我使用自定义函数。

    mutate(Type1 = numerify_categorical(Type1), # take care of categorical variables
           Type2 = numerify_categorical(Type2))

回溯的重要部分如下:

16: stop(list(message = "Evaluation error: missing value where TRUE/FALSE needed.", 
    call = mutate_impl(.data, dots), cppstack = NULL))
15: .Call(`_dplyr_mutate_impl`, df, dots)
14: mutate_impl(.data, dots)
13: mutate.tbl_df(tbl_df(.data), ...)
12: mutate(tbl_df(.data), ...)
11: as.data.frame(mutate(tbl_df(.data), ...))
10: mutate.data.frame(., Type1 = numerify_categorical(Type1), Type2 = numerify_categorical(Type2))

我不知道导致此错误的是什么,我很感激任何反馈,因为从我进行的搜索中我没有多少运气。一些消息来源似乎要求使用&#34; mutate _&#34;或&#34; mutate_each _&#34;,但我没有运气。

1 个答案:

答案 0 :(得分:0)

固定:我已经意识到numerify_categorical函数没有使用Type2,因为它引入了NA。为了修改这个,我只是在“分拣机”功能中添加了一个特殊情况 - if(is.na(x))return(NULL)。
感谢