【问题标题】:How do I fix the “No encoding Supplied” error?如何修复“未提供编码”错误?
【发布时间】:2017-03-07 12:30:19
【问题描述】:

在运行代码并尝试将数据集导出到电子表格或 txt.file 后,我遇到了困难。 我是 R 的新手,所以也许这个问题是微不足道的。

运行以下代码后:

eia_series <- function(api_key, series_id, start = NULL, end = NULL, num = NULL, tidy_data = "no", only_data = FALSE){
  # max 100 series
  # test if num is not null and either start or end is nut null. Not allowed
  # api_key test for character.
  # series_id test for character.
  # if start/end not null, then check if format matches series id date format
  # parse date and numerical data

  # parse url
  series_url <- httr::parse_url("http://api.eia.gov/series/")
  series_url$query$series_id <- paste(series_id, collapse = ";")
  series_url$query$api_key <- api_key
  series_url$query$start <- start
  series_url$query$end <- end
  series_url$query$num <- num

  # get data
  series_data <- httr::GET(url = series_url)
  series_data <- httr::content(series_data, as = "text")
  series_data <- jsonlite::fromJSON(series_data)

  # Move data from data.frame with nested list and NULL excisting
  series_data$data <- series_data$series$data
  series_data$series$data <- NULL

  # parse data
  series_data$data <- lapply(X = series_data$data, 
                         FUN = function(x) data.frame(date = x[, 1], 
                                                      value = as.numeric(x[, 2]), 
                                                      stringsAsFactors = FALSE))

  # add names to the list with data
  names(series_data$data) <- series_data$data

  # parse dates
  series_data$data <- eia_date_parse(series_list = series_data$data, format_character = series_data$series$f)

  # tidy up data
  if(tidy_data == "tidy_long"){

    series_data$data <- lapply(seq_along(series_data$data), 
                           function(x) {cbind(series_data$data[[x]], 
                                              series_time_frame = series_data$series$f[x],
                                              series_name = series_data$series$series_id[x], 
                                              stringsAsFactors = FALSE)})
series_data$data <- do.call(rbind, series_data$data)
  } 

  # only data
  if(only_data){
    series_data <- series_data$data
  }

  return(series_data)
}

函数运行后

eia_series(api_key = "XXX",series_id = c("PET.MCRFPOK1.M", "PET.MCRFPOK2.M"))

我尝试“传输”数据以导出数据,但出现以下错误:

未提供编码:默认为 UTF-8。

我不明白为什么。你能帮帮我吗?

【问题讨论】:

  • 您没有在content 中指定您正在解析的文件的编码。检查?content...

标签: r export rstudio


【解决方案1】:

这看起来不像是一个错误,而是一个声明。可能来自httr::content(series_data, as = "text")。在正文部分查看https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html。只要您的数据返回您所期望的,这应该不是问题。否则你可以尝试不同的编码或者其他地方有错误。

【讨论】:

  • 是的,但即使是文本,我也无法使用函数 'fwrite' 或 'write.table' 导出。
  • 你能发布测试变量的内容吗?
  • 嗯,实际上它包含数据(如下所示),但我无法导出它。 &gt; test$request$request$command[1] "series"1 PET.MCRFPOK1.M Oklahoma Field Production of Crude Oil, Monthly Thousand Barrels M Mbbl Oklahoma Field Production of Crude Oil Nonesource iso3166 geography start end updatedsource iso3166 geography start end updated1 EIA, U.S. Energy Information Administration USA-OK USA-OK 198101 201612 2017-02-28T14:42:25-05002 EIA, U.S. Energy Information Administration USA-OK USA OK``198101 201612 2017-02-28T14:42:25-0500@98765434@4@9876
  • httr 返回一个带有请求、数据和其他字段的list。您应该能够通过访问test$data 或类似的方式提取必填字段。让我们知道是否还有其他问题。对不起,如果我说的很明显:)
  • 哇...对不起@Lukáš Hejtmánek,我是 R 的新手。但非常感谢! :)
【解决方案2】:

试试:

series_data &lt;- httr::content(series_data, as = "text", encoding = "UTF-8")

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 使用参数 encoding = "UTF-8" 提供编码并且不会打印“错误”/语句。
猜你喜欢
  • 2018-12-04
  • 2021-07-24
  • 1970-01-01
  • 2021-12-13
  • 2017-12-08
  • 2019-10-21
  • 2019-12-09
相关资源
最近更新 更多