r-SQL Server数据中的UTF-8字节序列无效,导致write.xlsx无法工作



我正试图使用dbGetQuery通过R中的数据帧将一些数据从SQL Server拉入Excel,但我收到了以下错误:

Error in stri_length(newStrs) : 
invalid UTF-8 byte sequence detected; try calling stri_enc_toutf8()

我找到的最好的解决方案是用以下代码转换数据:

sapply(data, iconv, to = "UTF-8")

然而,当我这样做的时候,我的数据帧看起来像这样:

> data
1   Womens Healthcare Nurse
2 Women's Health Care - NCC
3 Women's Health Care - NCC
4 Women's Health Care - NCC
5 Women's Health Care - NCC

到此:

> sapply(data, iconv, to = "UTF-8")
[1,] "Womens Healthcare Nurse"  
[2,] "Women's Health Care - NCC"
[3,] "Women's Health Care - NCC"
[4,] "Women's Health Care - NCC"
[5,] "Women's Health Care - NCC"

我不完全清楚区别是什么,但我可以使用openxlsx将第一个数据框写入电子表格,这没有问题,但当使用第二个数据框时,电子表格最终只包括最后一条记录。我正在使用:

write.xlsx(x = data, file = file)

我如何才能进行这种转换,并最终得到可以用于正确写入电子表格的相同数据框?

这更像是一个一般的R问题。基本R中的一种方法是:

# create input
dat <- data.frame(num = 1:26, chr = letters)
# select the characters
is_chr <- vapply(dat, inherits, what = "character", NA)
# modify the output
dat[is_chr] <- lapply(dat[is_chr], iconv, to = "UTF-8")

最新更新