gpt4 book ai didi

r - data.table::merge 如何避免使用合并编码警告?

转载 作者:行者123 更新时间:2023-12-04 15:11:34 26 4
gpt4 key购买 nike

使用 mergedata.table我收到编码警告。我的过程是作为同伴:

  • 我正在创建第一个 data.table
  • 我使用 merge 更新此数据表.

  • 但是我打电话时 merge我收到此警告:
    Please ensure that character columns have identical encodings for joins.

    如何告诉 data.table 使用的编码?我知道我可以使用 suppressWarnings 删除警告但我更喜欢以干净的方式解决这个问题。

    这再现了警告:
    library(data.table)
    options(stringsAsFactors=FALSE)
    dt = data.table(text=c('é','à','s'),
    title='agstudy',hrefs='a')
    setkeyv(dt,names(dt))
    dt.new = data.table(text=c('é','à','h','a'),
    hrefs=c(rep('a',2),rep('aa',2)),
    title=c(rep('agstudy',2),rep('new',2)))
    setkeyv(dt.new,names(dt.new))
    merge(dt.new,dt,all=TRUE)

    Warning messages:
    1: In `[.data.table`(y, xkey, nomatch = ifelse(all.x, NA, 0), allow.cartesian = allow.cartesian) :
    Encoding of character column 'text' in X is different from column 'text' in Y
    in join X[Y]. Joins are not implemented yet for non-identical character encodings
    and therefore likely to contain unexpected results for those entries.
    Please ensure that character columns have identical encodings for joins.

    编辑 添加一些 session 信息:
    sessionInfo()
    R version 3.0.2 (2013-09-25)
    Platform: x86_64-w64-mingw32/x64 (64-bit)
    [1] data.table_1.8.11

    编辑2 添加一些上下文

    我的 data.table 是在一些抓取后创建的,我将编码设置为 UTF-8使用 htmlParse(...,encoding='UTF-8') 然后我使用刮取的文本创建 data.table。

    最佳答案

    警告是由字符向量中的混合编码引起的。 ascii 字符的编码为“未知”,但其他字符可能是“latin1”。

    使用它来将所有编码转换为未知:

    dt[, names(dt) := lapply(.SD, function(x) {if (is.character(x)) Encoding(x) <- "unknown"; x})]

    如果对第二个 DT 执行相同操作,则可以避免警告。

    请注意,您使用的是开发版本。这种行为可能很快就会改变。

    关于r - data.table::merge 如何避免使用合并编码警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071588/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com