Read.table() invalid multibyte string error: Find the strings causing the error
Read.table() invalid multibyte string error: Find the strings causing the error
我知道关于 read.table()
的问题有很多类似的问题。但是我无法将以下数据 sheet 导入 R,它由具有不同资产的交易域、它们的描述和组组成:
https://wikifolio.blob.core.windows.net/prod-documents/Investment_Universe.xlsx
我将文件保存为 dat.csv
并尝试 read.table("dat.csv", header=T, sep=";", stringsAsFactors=F, quote="")
使用不同的编码(例如 latin1
),但我总是收到无效的多字节字符串错误。此外,我尝试使用文本编辑器查找并替换所有“ä”、“ö”和“ü”。
如何找到将 table 读入 R 时发生错误的行?目前,我不知道去哪里寻找导致问题的字符串。
谢谢!
问题出在您的其中一个包含 ü
字符的列名中。在 read.csv2
:
中使用 check.names = FALSE
dat <- read.csv2("dat.csv", check.names = FALSE)
这将正确读取您的文件:
> head(dat)
ISIN WKN SecurityType Bezeichnung Anlageuniversum (Gruppe) Anlageuniversum Whitelist f\x81r institutionelle Produkte _ Schweiz
1 AN8068571086 853390 Stock SCHLUMBERGER Aktien Europa Aktien Europa Select X
2 AT000000STR1 A0M23V Stock STRABAG Aktien Europa Aktien Europa Select X
3 AT00000AMAG3 A1JFYU Stock AMAG AUSTRIA METALL AG Aktien Europa Aktien Europa Select X
4 AT00000ATEC9 A0LFDH Stock A-TEC INDUSTRIES Aktien Europa Aktien Europa Select X
5 AT00000BENE6 A0LCPZ Stock BENE AG Aktien Europa Aktien Europa Select X
6 AT00000FACC2 A1147K Stock FACC AG Aktien Europa Aktien Europa Select X
然后您可以更改列名称,例如:
names(dat) <- c("ISIN","WKN","SecurityType","Bezeichnung",
"Anlageuniversum_Gruppe","Anlageuniversum","Whitelist_Schweiz")
另一种可能性是在没有 headers:
的情况下读取您的文件
dat <- read.csv2("dat.csv", header = FALSE, skip = 1)
我知道关于 read.table()
的问题有很多类似的问题。但是我无法将以下数据 sheet 导入 R,它由具有不同资产的交易域、它们的描述和组组成:
https://wikifolio.blob.core.windows.net/prod-documents/Investment_Universe.xlsx
我将文件保存为 dat.csv
并尝试 read.table("dat.csv", header=T, sep=";", stringsAsFactors=F, quote="")
使用不同的编码(例如 latin1
),但我总是收到无效的多字节字符串错误。此外,我尝试使用文本编辑器查找并替换所有“ä”、“ö”和“ü”。
如何找到将 table 读入 R 时发生错误的行?目前,我不知道去哪里寻找导致问题的字符串。
谢谢!
问题出在您的其中一个包含 ü
字符的列名中。在 read.csv2
:
check.names = FALSE
dat <- read.csv2("dat.csv", check.names = FALSE)
这将正确读取您的文件:
> head(dat)
ISIN WKN SecurityType Bezeichnung Anlageuniversum (Gruppe) Anlageuniversum Whitelist f\x81r institutionelle Produkte _ Schweiz
1 AN8068571086 853390 Stock SCHLUMBERGER Aktien Europa Aktien Europa Select X
2 AT000000STR1 A0M23V Stock STRABAG Aktien Europa Aktien Europa Select X
3 AT00000AMAG3 A1JFYU Stock AMAG AUSTRIA METALL AG Aktien Europa Aktien Europa Select X
4 AT00000ATEC9 A0LFDH Stock A-TEC INDUSTRIES Aktien Europa Aktien Europa Select X
5 AT00000BENE6 A0LCPZ Stock BENE AG Aktien Europa Aktien Europa Select X
6 AT00000FACC2 A1147K Stock FACC AG Aktien Europa Aktien Europa Select X
然后您可以更改列名称,例如:
names(dat) <- c("ISIN","WKN","SecurityType","Bezeichnung",
"Anlageuniversum_Gruppe","Anlageuniversum","Whitelist_Schweiz")
另一种可能性是在没有 headers:
的情况下读取您的文件dat <- read.csv2("dat.csv", header = FALSE, skip = 1)