合并数据表时出现错误 - 编码警告信息

3

我正在尝试合并两个data.table,并且收到了以下错误信息:

> tabelaApoio <- merge(data.table(Geo = iconv(.rop, to = 'UTF8'), Level = 2, key = c('Geo', 'Level')), data.table(Geo = iconv(.bairros, to = 'UTF8'), Level = 3, key = c('Geo', 'Level')))
Warning message:
In bmerge(i <- shallow(i), x, leftcols, rightcols, io <- haskey(i),  :
  A known encoding (latin1 or UTF-8) was detected in a join column.
  data.table compares the bytes currently, so doesn't support *mixed* 
  encodings well; i.e., using both latin1 and UTF-8, or if any unknown 
  encodings are non-ascii and some of those are marked known and others not.
  But if either latin1 or UTF-8 is used exclusively, and all unknown encodings
  are ascii, then the result should be ok. In future we will check for you
  and avoid this warning if everything is ok. The tricky part is doing this
  without impacting performance for ascii-only cases.
> tabelaApoio
Empty data.table (0 rows) of 2 cols: Geo,Level

好的,我理解了问题:这些变量没有相同的编码方式。问题就在于这两个变量都是在R中创建的,在.First()函数内部:

function() {
dir <- sprintf('C:/Users/%s/Desktop/Coisas', Sys.info()['user'])
if (file.exists(dir)) { setwd(sprintf('C:/Users/%s/Desktop/Coisas/', Sys.info()['user'])) }
else { warning(sprintf('Não foi possível alterar a pasta de trabalho para %s', dir)) }
assign('.dir', sprintf('%sCoisas/ObservaPOA/', substr(R.home(), 1, 3)), .GlobalEnv)
assign('.bairros', c("Agronomia", "Anchieta", "Arquipélago", "Auxiliadora", "Azenha", "Bela Vista", "Belém Novo", "Belém Velho", "Boa Vista", "Bom Fim", "Bom Jesus", "Camaquã", "Campo Novo", "Cascata", "Cavalhada", 
"Cel Aparício Borges", "Centro Histórico", "Chácara das Pedras", "Chapéu do Sol", "Cidade Baixa", "Cristal", "Cristo Redentor", "Espírito Santo", "Farrapos", "Farroupilha", "Floresta", "Glória", 
"Guarujá", "Higienópolis", "Hípica", "Humaitá", "Independência", "Ipanema", "Jardim Botânico", "Jardim Carvalho", "Jardim do Salso", "Jardim Floresta", "Jardim Isabel", "Jardim Itú", "Jardim Lindóia", 
"Jardim Sabará", "Jardim São Pedro", "Lageado", "Lami", "Lomba do Pinheiro", "Mário Quintana", "Medianeira", "Menino Deus", "Moinhos de Vento", "Mont'Serrat", "Morro Santana", "Navegantes", "Nonoai", "Partenon", 
"Passo D'areia", "Passo das Pedras", "Pedra Redonda", "Petrópolis", "Ponta Grossa", "Praia de Belas", "Restinga", "Rio Branco", "Rubem Berta", "Santa Cecília", "Santa Maria Goretti", "Santa Tereza", "Santana", 
"Santo Antônio", "São Geraldo", "São João", "São José", "São Sebastião", "Sarandi", "Serraria", "Teresópolis", "Três Figueiras", "Tristeza", "Vila Assunção", "Vila Conceição", "Vila Ipiranga", "Vila Jardim", 
"Vila João Pessoa", "Vila Nova"), .GlobalEnv)
assign('.rop', c("Centro", "Centro-Sul", "Cristal", "Cruzeiro", "Eixo-Baltazar", "Extremo-Sul", "Glória", "Humaitá / Navegantes", "Ilhas", "Leste", "Lomba do Pinheiro", "Nordeste", "Noroeste",
"Norte", "Partenon", "Restinga", "Sul"), .GlobalEnv)
lockBinding(".dir", .GlobalEnv)
lockBinding(".bairros", .GlobalEnv)
lockBinding(".rop", .GlobalEnv)
source(sprintf('%sLe bancos.R', .dir))
}

所以,我不知道为什么会出现这个警告信息,也不知道该如何解决它。我尝试使用iconv()函数,但没有成功 :(


@scribbles 使用了 latin1。谢谢! - Rcoster
太好了!已将评论转换为答案。 - scribbles
1个回答

1
更改 Encoding(data1$geo) <- "latin1" 代码中的 geo 列表,应该适用于两个表格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接