R编写将内容写入文件的麻烦

时间:2015-03-26 22:41:13

标签: r

我在编写将内容写入文件方面遇到了麻烦。 这是一个非常简单的案例,它已经让我头晕了几天。

我有一个名为teste.R的R文件,其代码如下:

teste <- function(fileContent, fileName) {
  fileConn<-file(fileName)
  writeLines(fileContent, fileConn)
  close(fileConn)   
}

page <- ''
page <- paste(page, 'ãõéç')

teste(page, 'file_.html')

好吧,我以两种不同的方式在R-Studio上运行这段代码:

1 - 我只是在控制台上运行teste功能。

2 - 我在控制台上运行以下命令:

source('F:/Dropbox/TESE/Projeto/AnaliseSAA/teste.R')

在这两种情况下,我都会在文件中获得相同的内容:ãõéç 到目前为止一切都很好。但是,如果我在浏览器上打开文件,我会得到两个不同的输出:

1-ãõéç

2-ÃÃÃéç

所有这一切都是因为我正在创建一个HTML页面来显示我在R中进行的分析,并且这些页面看起来很糟糕。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您希望创建HTML文件,最好使用现有工具(如RStudio的htmltools包),或使用markdown包。因为如果你不包括标准标签,包括声明编码的标签,那你就会感到很痛苦。

这是一个可能适合您的建议:

库(htmltools)

teste <- function(fileContent, fileName) {
  content <- tags$html(HTML('<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"></head>'),
                       tags$body(fileContent))
  outfile <- file(description = fileName, open = "w", encoding = "UTF-8")
  capture.output(content, file = outfile)
  close(outfile)
}

page <- ''
page <- paste(page, 'ãõéç')

teste(page, 'file_.html')

修改

另一种方法是用这样的函数替换加重的字符(包中可能有一个预先存在的字符,但我不知道一个):

repl.accent <- function(x) {
    accent <- c("À", "à", "Â", "â", "Ç", "ç", "È", "è", "É", "é", "Ê", "ê", "Ë", "ë",
                "Î", "î", "Ï", "ï", "Ñ", "ñ", "Ô", "ô", "Ö", "ö", "Ù", "ù", "Û", "û", 
                "Ü", "ü","'")
   repl  <- c("&#192;", "&#224;", "&#194;", "&#226;", "&#199;", "&#231;", "&#200;",
              "&#232;", "&#201;", "&#233;", "&#202;", "&#234;", "&#203;", "&#235;",
              "&#206;", "&#238;", "&#207;", "&#239;", "&#209;", "&#241;", "&#212;",
              "&#244;", "&#214;", "&#246;", "&#217;", "&#249;", "&#219;", "&#251;",
              "&#220;", "&#252;", "&#39;")
   stringi::stri_replace_all_fixed(str = x, pattern = accent, replacement = repl, vectorize_all = FALSE)
}

repl.accent('éçà')
[1] "&#233;&#231;&#224;"