Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何摆脱<;U+;FEFF>;在R data.table列名称中?_R_Data.table - Fatal编程技术网

如何摆脱<;U+;FEFF>;在R data.table列名称中?

如何摆脱<;U+;FEFF>;在R data.table列名称中?,r,data.table,R,Data.table,为了导入大型数据集,我使用了data.table和integer64=“character”选项,因为有些列有非常大的数字,而这些数字在其他情况下被截断,只是标识符 my <- fread("mydata.csv", encoding="UTF-8",integer64 = "character") 但我得到了这个错误: 集合名中的错误(miniDT,“ID_2006_2011”,“ID”):项目为“旧” 在列名中找不到:ID_2006_2011 列名确实存在,因为…: > min

为了导入大型数据集,我使用了data.table和integer64=“character”选项,因为有些列有非常大的数字,而这些数字在其他情况下被截断,只是标识符

my <- fread("mydata.csv", encoding="UTF-8",integer64 = "character")
但我得到了这个错误:

集合名中的错误(miniDT,“ID_2006_2011”,“ID”):项目为“旧” 在列名中找不到:ID_2006_2011

列名确实存在,因为…:

> miniDT[1,1, with=F]
   <U+FEFF>ID_2006_2011
1:         160701000002
>miniDT[1,1,带=F]
ID_2006_2011
1:         160701000002

目前,我将使用数字而不是名称来引用列。

我也有同样的问题,并且发现
readLines()
with
encoding=“UTF-8-BOM”
实际上并没有删除它。我使用了以下功能来剥离BOM表:

removeBOM <- function(headers){
  gsub("\\xef\\xbb\\xbf", "", headers, useBytes = T)
}

removeBOM无需测试的可复制示例。。但在当前的开发中已经修复。但这似乎是在数据上修复的。表1.9.8。我使用的是1.9.7,在我的情况下有什么解决方法吗?我试着只导出数据集的一小部分,但它没有产生错误,我不知道为什么。如果没有要测试的文件,我做不了多少。@Arun我已经将它发送给您使用save()保存的对象。
> miniDT[1,"<U+FEFF>ID_2006_2011", with=F]
Error in `[.data.table`(miniDT, 1, "<U+FEFF>ID_2006_2011", with = F) : 
  column(s) not found: <U+FEFF>ID_2006_2011
> miniDT[1,"ID_2006_2011", with=F]
Error in `[.data.table`(miniDT, 1, "ID_2006_2011", with = F) : 
  column(s) not found: ID_2006_2011
setnames(miniDT, "ID_2006_2011", "ID")
> miniDT[1,1, with=F]
   <U+FEFF>ID_2006_2011
1:         160701000002
removeBOM <- function(headers){
  gsub("\\xef\\xbb\\xbf", "", headers, useBytes = T)
}