我在办公室与网络连接R时面临问题。可能是由于局域网设置。我尝试了网上遇到的几乎所有可能的方式(见下文),但仍然徒劳无功。
方法1:使用--internet2
方法2:通过设置~/Rgui.exe http_proxy=http:/999.99.99.99:8080/ http_proxy_user=ask
方法3:设置Setinternet2=TRUE
方法4:
curl <- getCurlHandle()
curlSetOpt(.opts = list(proxy = '999.99.99.99:8080'), curl = curl)
Res <- getURL('http://www.cricinfo.com', curl = curl)
在上述所有方法中,我可以直接从CRAN加载包,也可以使用download.file命令下载文件
但是使用getURL(RCurl)
,readHTMLTable(XML)
,htmlTreeParse(XML)
命令我无法提取网络数据。我收到~<HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD>~
错误。
如何在R?
中设置XML包的LAN代理设置答案 0 :(得分:44)
在Mac OS上,我找到了最佳解决方案here。引用作者,两个简单的步骤是:
1)打开终端并执行以下操作:
export http_proxy=http://staff-proxy.ul.ie:8080
export HTTP_PROXY=http://staff-proxy.ul.ie:8080
2)运行R并执行以下操作:
Sys.setenv(http_proxy="http://staff-proxy.ul.ie:8080")
仔细检查:
Sys.getenv("http_proxy")
我支持大学代理,这个解决方案非常有效。主要问题是在运行R之前导出终端中的项目,无论是大写还是小写。
答案 1 :(得分:22)
问题在于你的卷曲选项 - RCurl
包似乎没有使用internet2.dll
。
您需要单独指定端口,并且可能需要将您的用户登录详细信息作为网络凭据,例如,
opts <- list(
proxy = "999.999.999.999",
proxyusername = "mydomain\\myusername",
proxypassword = "mypassword",
proxyport = 8080
)
getURL("http://stackoverflow.com", .opts = opts)
请记住在密码中转义任何反斜杠。您可能还需要在调用curlEscape
时将URL包装起来。
答案 2 :(得分:15)
对于RStudio,你必须这样做:
首先,像往常一样打开RStudio,从顶部菜单中选择:
工具 - 全球 选项 - 套餐
取消选中该选项:使用Internet Explorer库/代理进行HTTP
然后关闭Rstudio,此外你必须:
在计算机中找到文件(.Renviron),很可能你会在这里找到它:C:\ Users \你的用户名\ Documents。请注意,如果它不存在,您只需在RStudio中编写此命令即可创建它:
file.edit('~/.Renviron')
将这两行添加到文件的首字母:
options(internet.info = 0)
http_proxy="http://user_id:password@your_proxy:your_port"
就是这样...... ?? !!!
答案 3 :(得分:11)
我在办公室遇到同样的问题,我解决了在R快捷方式的目的地添加代理的问题;单击R图标,首选项和目标字段中的右键按钮
"C:\Program Files\R\your_R_version\bin\Rgui.exe" http_proxy=http://user_id:passwod@your_proxy:your_port/
确保将目录放在安装了R程序的位置。这对我行得通。希望这有帮助。
答案 4 :(得分:6)
如果您从桌面图标启动R,则可以将--internet
标记添加到目标行(右键单击 - &gt;属性),例如。
"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2
答案 5 :(得分:6)
在Windows 7上,我通过进入我的环境设置(try this link for how)并使用我的代理详细信息添加用户变量http_proxy
和https_proxy
来解决此问题。
答案 6 :(得分:6)
这篇文章涉及* nix上的R代理问题。您应该知道R有许多库/方法可以通过互联网获取数据。
对于&#39; curl&#39;,&#39; libcurl&#39;,&#39; wget&#39;等,只需执行以下操作:
打开终端。键入以下命令:
sudo gedit /etc/R/Renviron.site
输入以下行:
http_proxy='http://username:password@abc.com:port/'
https_proxy='https://username:password@xyz.com:port/'
使用特定于您的网络的这些设置替换username
,password
,abc.com
,xyz.com
和port
。
退出R并重新启动。
这可以解决你的问题&#39; libcurl&#39;并且&#39; curl&#39;方法。但是,我还没有尝试过&#39; httr&#39;。用&#39; httr&#39;做到这一点的一种方法仅针对该会话如下:
library(httr)
set_config(use_proxy(url="abc.com",port=8080, username="username", password="password"))
您需要在相关字段中替换特定于您的n / w的设置。
答案 7 :(得分:5)
受到互联网上所有相关回复的启发,我终于找到了正确配置R和Rstudio代理的解决方案。
要遵循几个步骤,也许有些步骤没用,但组合起作用了!
使用代理详细信息添加环境变量http_proxy
和https_proxy
。
variable name: http_proxy
variable value: https://user_id:password@your_proxy:your_port/
variable name: https_proxy
variable value: https:// user_id:password@your_proxy:your_port
如果您从桌面图标启动R,则可以将--internet
标记添加到目标行(右键单击 - &gt;属性)
e.g。"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2
对于RStudio,你必须这样做:
首先,像往常一样打开RStudio,从顶部菜单中选择:
工具 - 全局选项 - 包
取消选中该选项:使用Internet Explorer库/代理进行HTTP
在您的计算机中找到文件(.Renviron
),很可能您会在此处找到它:C:\Users\your user name\Documents
。
请注意:如果它不存在,您只需在R:
中编写此命令即可创建它file.edit('~/.Renviron')
然后将这六行添加到文件的首字母:
options(internet.info = 0)
http_proxy = https:// user_id:password@your_proxy:your_port
http_proxy_user = user_id:password
https_proxy = https:// user_id:password0@your_proxy:your_port
https_proxy_user = user_id:password
ftp_proxy = user_id:password@your_proxy:your_port
重新启动R.在R中键入以下命令以确保上述配置运行良好:
Sys.getenv("http_proxy")
Sys.getenv("http_proxy_user")
Sys.getenv("https_proxy")
Sys.getenv("https_proxy_user")
Sys.getenv("ftp_proxy")
现在,您可以使用以下命令安装软件包:
install.packages("mlr",method="libcurl")
添加method="libcurl"
非常重要,否则无法正常工作。
答案 8 :(得分:1)
使Windows 10
下的所有内容在RStudio中运行的最简单方法:
打开Internet Explorer,选择Internet Options
:
打开环境变量编辑器:
在表单中添加变量HTTP_PROXY:
HTTP_PROXY=http://username:password@localhost:port/
示例:
HTTP_PROXY=http://John:JohnPassword@localhost:8080/
RStudio应该可以工作:
答案 9 :(得分:0)
使用netsh,winhttp等尝试了所有这些以及解决方案。 Geek On Acid的回答帮助我从服务器下载软件包,但这些解决方案都没有使用我想运行的软件包(twitteR软件包)。
最佳解决方案是使用一个软件,让您配置系统范围的代理。
FreeCap(免费)和Proxifier(试用)在我的公司为我工作完美。
请注意,您需要从浏览器和已配置为使用代理的任何其他应用中删除代理设置,因为这些工具可为您计算机上的所有网络流量提供系统范围的代理。
答案 10 :(得分:-1)
我在Windows 7(32位)上的解决方案。 R版本3.0.2
Sys.setenv(http_proxy="http://proxy.*_add_your_proxy_here_*:8080")
setInternt2
updateR(2)