我正在处理口袋妖怪(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;,但我没有运气。
答案 0 :(得分:0)
固定:我已经意识到numerify_categorical函数没有使用Type2,因为它引入了NA。为了修改这个,我只是在“分拣机”功能中添加了一个特殊情况 - if(is.na(x))return(NULL)。
感谢