首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rstudio (或rterm)使用哪个进程访问Internet?

Rstudio (或rterm)使用哪个进程访问Internet?
EN

Stack Overflow用户
提问于 2021-05-17 19:29:17
回答 1查看 63关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2021-05-17 21:48:42

如果你使用的是Windows,有不止一种方法可以访问互联网,我已经多次遇到过这个问题。您将熟悉Curl,它被许多底层库使用,例如RCurl和httr。

然而,R默认使用的方法实际上是基于WinINet的,用于install.packages()、url()和file()等操作。不深入细节,WinInet是Internet Explorer用来访问web的同一个库。

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

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

您还应该注意,假设您已经安装了curl,那么在Windows上,您可以更改fileurl的默认设置,使它们依赖于curl而不是WinINet。

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

代码语言:javascript
复制
library(httr)
url <- "https://rawgit.com/yoke2/dsxref/master/iris.xlsx"
GET(url, write_disk("iris.xlsx", overwrite=TRUE))

下面是download.file()的等价物

代码语言:javascript
复制
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示例

代码语言:javascript
复制
library(httr)
response <- httr::GET('https://jsonplaceholder.typicode.com/todos/1')
content <- httr::content(response)

这里有一种依赖于url的方法

Windows上的此方法将使用WinINet

代码语言:javascript
复制
library(jsonlite)
u <- url('https://jsonplaceholder.typicode.com/todos/1')
json <- readLines(u, warn = FALSE)
content <- parse_json(json)

您可以通过对任何相关函数(urlfilefile.download)使用help命令来了解有关WinINet的更多信息,这是一个很好的入门之处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67568806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档