为什么grep()在readLines()之后不起作用?

时间:2017-10-08 20:21:20

标签: r readlines

我在R开发了一个程序来阅读在线提供的报告,前两行是:

page1 <- readLines("http://reportviewer.tce.mg.gov.br/default.aspx?server=noruega&relatorio=SICOM_Consulta/2013_2014/Modulo_AM/UC03-LeisOrc-RL&municipioSelecionado=3100203&exercicioSelecionado=2014")
line1 <- grep("Leis Autorizativas",page1)

程序的其余部分工作正常,我得到了我需要的数据。然后我尝试调整它以阅读不同的报告,但这次第二行不起作用:

page2 <- readLines("http://reportviewer.tce.mg.gov.br/default.aspx?server=noruega&relatorio=SICOM_Consulta/2013_2014/Modulo_AM/UC08-ConsultarDecretos-RL&municipioSelecionado=3101607&exercicioSelecionado=2013")
line2 <- grep("Decretos de Alterações",page2)

在第一种情况下,'page1'是字符向量,而在第二种情况''page2'是字符向量。这种差异是否可能导致问题?如果是这样,是否有人提示如何修复它?

(使用htmltab()或readHTMLtable()没有产生好的结果)

谢谢。

1 个答案:

答案 0 :(得分:2)

那是因为“DecretosdeAlterações”并不完全由ascii字符组成。

如果您尝试

page2 <- readLines("http://reportviewer.tce.mg.gov.br/default.aspx?server=noruega&relatorio=SICOM_Consulta/2013_2014/Modulo_AM/UC08-ConsultarDecretos-RL&municipioSelecionado=3101607&exercicioSelecionado=2013")

grep("Decretos de Altera&#231;&#245;es ", page2)

[1] 366

有效。

知道要替换的号码:

utf8ToInt("ç")
[1] 231

然后将结果数字放在&;之间,并替换您的非ascii字母。

最佳

科林