R不警告并只读取txt文件中的一些数据
问题描述:
我对发生的事情无能为力。我正在尝试读取R中的utf-8 txt文件。值由标签分隔。以下是从文件的摘录:R不警告并只读取txt文件中的一些数据
LOCATION FORM TAG FEATURES
1 (1:1:1:1) bi P PREFIX|bi+
2 (1:1:1:2) somi N STEM|POS:N|LEM:{som|ROOT:smw|M|GEN
3 (1:1:2:1) {ll~ahi PN STEM|POS:PN|LEM:{ll~ah|ROOT:Alh|GEN
4 (1:1:3:1) {l DET PREFIX|Al+
5 (1:1:3:2) r~aHoma`ni ADJ STEM|POS:ADJ|LEM:r~aHoma`n|ROOT:rHm|MS|GEN
6 (1:1:4:1) {l DET PREFIX|Al+
该文件可以从Quranic Arabic Corpus Downloads
这里是我试图读取文件的方式之一下载:
test <- read.csv(file = "quranic-corpus-morphology-0.4.txt",
sep = "\t", header = TRUE, skip = 56,
stringsAsFactors = FALSE)
的问题是多少正在阅读的记录。我可以很容易地看到记录数量的差异。 read.csv
返回77109条记录,没有任何警告。而在LibreOffice Calc中打开相同的文件,我可以看到128219条记录。
读取文件通过read.table
:
test <- read.table(file = "quranic-corpus-morphology-0.4.txt",
sep = "\t", header = TRUE,
skip = 56, stringsAsFactors = FALSE)
回报
错误扫描(文件=文件,内容=什么,月=月,报价=报价,DEC =月,: 线78没有4个元素
我无法弄清楚什么是错用线78
弄干净CSV我甚至都试过了,另存为LibreOffice的计算器,它会返回该警告CSV
本文档可能包含不能被保存在当前选定的文件格式的格式或内容“文本CSV” 。
线135-140:
(2:7:4:1) quluwbi N STEM|POS:N|LEM:qalob|ROOT:qlb|FP|GEN
(2:7:4:2) himo PRON SUFFIX|PRON:3MP
(2:7:5:1) wa CONJ PREFIX|w:CONJ+
(2:7:5:2) EalaY` P STEM|POS:P|LEM:EalaY`
(2:7:6:1) samoEi N STEM|POS:N|LEM:samoE|ROOT:smE|M|GEN
(2:7:6:2) himo PRON SUFFIX|PRON:3MP
答
你需要让R来治疗你的数据报价为其他任何字符,否则它要去把它的其余部分作为一个字符串,直至最终报价,
62行(跳过56行后)似乎有'
在第4列STEM|POS:V|IMPF|(IV)|LEM:'aAmana|ROOT:Amn|3MP
。
尝试:
test <- read.csv(file = "quranic-corpus-morphology-0.4.txt",
sep = "\t", header = TRUE, skip = 56,
stringsAsFactors = FALSE, quote="")
输出:
> str(test)
'data.frame': 128219 obs. of 4 variables:
$ LOCATION: chr "(1:1:1:1)" "(1:1:1:2)" "(1:1:2:1)" "(1:1:3:1)" ...
$ FORM : chr "bi" "somi" "{ll~ahi" "{l" ...
$ TAG : chr "P" "N" "PN" "DET" ...
$ FEATURES: chr "PREFIX|bi+" "STEM|POS:N|LEM:{som|ROOT:smw|M|GEN" "STEM|POS:PN|LEM:{ll~ah|ROOT:Alh|GEN" "PREFIX|Al+" ...
+0
我无法将此添加为上述注释,因为我没有足够的声望。所以添加它作为一个答案,而不是。 –
您可以在您的问题在线78?这个错误似乎是说R没有找到4列,即它找到了少于或多于4列。 –
我跳过第56行有版权文本,所以78会是相对的,我应该包括哪一行数? –
如果可能,请包括135-140。但首先检查以确保这些线路的数据更有意义。 –