【问题标题】:Which process is used by Rstudio (or rterm) to access Internet?Rstudio(或 rterm)使用哪个进程访问 Internet?
【发布时间】:2021-05-17 11:29:16
【问题描述】:

我正在尝试使用 curl 包功能访问 Web 服务器。我收到“接收失败:连接已重置”错误。 我知道,这是防火墙问题,因为在其他网络中,它可以工作。 所以我需要知道 Rstudio 使用哪个进程来访问 Internet。 我的 IT 管理员从 Rstudio 和 R 语言文件夹中添加了一些 exe 文件作为防火墙的例外,因此 R Studio 现在可以安装软件包。但是其他一些东西,比如 curl 仍然不起作用。 有什么解决方案可以让 R 函数在 Windows 防火墙后工作?

【问题讨论】:

    标签: r rstudio firewall


    【解决方案1】:

    我在使用 R 时曾多次遇到此问题。如果您使用的是 Windows,则可以使用多种方法访问 Internet。您将熟悉 Curl,许多库在后台使用它,例如RCurl 和 httr。

    然而,R 默认使用的方法,如 install.packages()、url() 和 file() 操作实际上是基于 WinINet。无需赘述,WinInet 与 Internet Explorer 用于访问 Web 的库相同。

    WinINet is more limited in its functionalities than Curl 但是,如果您正在做一些像下载文件这样基本的事情,那么您应该没有问题。

    下面您将看到一个示例,说明如何获取使用 httr 编写的脚本并重新执行,以便可以使用 url 等函数完成。

    您还应该注意,在 Windows 上,您可以更改 fileurl 的默认值,以便它们依赖 curl 而不是 WinINet,假设您安装了 curl。

    这是一些使用 httr 下载文件的代码

    library(httr)
    url <- "https://rawgit.com/yoke2/dsxref/master/iris.xlsx"
    GET(url, write_disk("iris.xlsx", overwrite=TRUE))
    

    这里是download.file()的等价物

    url = "https://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv"
    download.file(url, "iris.csv", quiet=TRUE)
    

    这是一些使用 httr 进行 curl GET 操作的代码

    我们从https://jsonplaceholder.typicode.com/检索JSON示例

    library(httr)
    response <- httr::GET('https://jsonplaceholder.typicode.com/todos/1')
    content <- httr::content(response)
    

    这是一种依靠url的方法

    此方法在 Windows 上将使用 WinINet

    library(jsonlite)
    u <- url('https://jsonplaceholder.typicode.com/todos/1')
    json <- readLines(u, warn = FALSE)
    content <- parse_json(json)
    

    您可以通过在任何相关函数(urlfilefile.download)上使用help 命令来了解更多有关 WinINet 的信息,这是开始了解的好地方周围的东西。

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多