好了 - 所以这里是我想要做的事。
我已经得到了我想要导入R.此密码保护的CSV文件
我可以用细导入:
read.csv()
当我在RStudio我的代码运行一切都运行完美。
然而,当我尝试使用批处理文件(Windows .bat)的形式运行我的.R文件这是行不通的。 我想用.bat文件,这样我可以成立一个计划任务,每天早上我的代码运行。
这里是我的.bat文件:
“E:\ R-3.0.2 \ BIN \ 64 \运行R.exe” CMD BATCH “E:\控制文件\ download_data.R” “E:\控制文件\ DailyEmail.txt”
这里是我的.R文件:
网址< - “ HTTP://用户名:password@www.url.csv ”
数据< - read.csv(URL,则跳过= 1)
**注意,我已经把我的用户名/密码和CSV的在我的代码的确切位置。 我在这里使用的通用的东西,因为这是工作相关的和张贴用户名和密码时可能是皱起了眉头。
正如我已经说过,我在RStudio使用此代码工作正常。 但是当我使用.bat文件失败。
我收到以下错误信息:
错误download.file(URL, “E:/data/data.csv”):无法打开URL 'websiteurl'另外:警告消息:在download.file(URL, “E:/data/data.csv”) : 无法解决“用户名”停止执行
**以上websiteurl高于HTTP(我不能发布链接),所以很明显,.BAT是具有与该用户名/密码的麻烦? 有什么想法吗?
*编辑*
到目前为止,我已经为这个尝试在Linux上。 想也许是窗户打傻开溜。
单从终端,我跑RSCRIPT -e“download_data.r:”当我在Windows中没有得到确切的相同的错误消息。 所以我怀疑这可能是在那里我得到的数据有问题? 能否提供者在命令行阻塞的数据,而不是从Rstudio?
我有一个已用文件权限做类似的问题。 .bat文件不知何故,你直接从Rstudio运行的代码不具有相同的权限。 尝试使用RSCRIPT( http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html喜欢你的.bat文件内)
RSCRIPT “E:\控制文件\ download_data.R”
什么是争论的宗旨,以“E:\控制文件\ DailyEmail.txt”? 是程序想以任何方式使用它呢?
所以,我已经找到了解决办法,这可能不是最实际对于大多数人,但对我的作品。
我所做的是我的迁移项目移交给Linux系统。 每天运行脚本,是在Linux上更容易反正。
该解决方案利用了Linux中的“wget的”功能。
你可以在你的shell脚本来运行wget的权利,或利用该系统在R()函数来运行的wget。
代码如下所示:
wget的-O /home/user/.../file.csv --user =用户ID --password = '密码' http://www.url.com/file.csv
你可以这样做:
syscomand> - “的wget -O /home/.../file.csv --user =用户ID --password = '密码' http://www.url.com/file.csv ”
系统(syscommand)
R中的CSV下载到的位置在硬盘上,然后使用read.csv抢CSV()
这样做,这样给了我一些更深入地了解问题的潜在根源。 虽然系统(syscommand)运行时,我得到下面的输出:
连接到www.website.com(www.website.com)| ip.ad.re.ss |:80 ...连接。
发送HTTP请求,正在等待回应... 401未授权
重用现有连接到www.weburl.com:80。
发送HTTP请求,正在等待回应... 200 OK
不知道为什么它有两次发送请求? 为什么我得到一个401的第一次尝试未授权?