R'n*_*n'E 2 encoding r character-encoding non-ascii-characters dataframe
从Windows 机器上的包加载数据,编码很糟糕。
\n\nrequire(vegdata)\ntax_dbf <- load.taxlist("GermanSL 1.3", detailed=TRUE)\ntax_dbf[33,"BEGRUEND"]\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n[1] " "Einf\xc3\x83\xc2\xbcgen einer Zwischenebene""
\n
我可以解决这个问题:
\n\nEncoding(tax_dbf$BEGRUEND) <- "UTF-8"\ntax_dbf[33,"BEGRUEND"]\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n[1]“Einf\xc3\xbcgen einer Zwischenebene”
\n
然而,我没有找到一种简单的方法来声明 df 中所有字符列的编码,而且我的 SO 搜索 foo 今天也很弱。\n这真是令人困惑。
\n\ntidyverse 中的任何人都可以为我的散文提供单行文字吗?
\n无需使用tidyverse。只需循环满足条件的列即可:
set.seed(1)\n\ndf <- data.frame(a = rep("Einf\xc3\x83\xc2\xbcgen einer Zwischenebene", 5), b = runif(5), c = rep("Einf\xc3\x83\xc2\xbcgen einer Zwischenebene", 5), stringsAsFactors = F)\n\ncols <- names(df)\n\nfor(i in seq_along(cols)){\n\n if(!is.character(df[, cols[[i]]])) next\n\n Encoding(df[, cols[[i]]]) <- "UTF-8"\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n导致:
\n\n> df\n a b c\n1 Einf\xc3\xbcgen einer Zwischenebene 0.2655087 Einf\xc3\xbcgen einer Zwischenebene\n2 Einf\xc3\xbcgen einer Zwischenebene 0.3721239 Einf\xc3\xbcgen einer Zwischenebene\n3 Einf\xc3\xbcgen einer Zwischenebene 0.5728534 Einf\xc3\xbcgen einer Zwischenebene\n4 Einf\xc3\xbcgen einer Zwischenebene 0.9082078 Einf\xc3\xbcgen einer Zwischenebene\n5 Einf\xc3\xbcgen einer Zwischenebene 0.2016819 Einf\xc3\xbcgen einer Zwischenebene\nRun Code Online (Sandbox Code Playgroud)\n\ndplyr::mutate_if(df, is.character, .funs = function(x){return(`Encoding<-`(x, "UTF-8"))})\nRun Code Online (Sandbox Code Playgroud)\n