首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R内部运行Plink

从R内部运行Plink
EN

Stack Overflow用户
提问于 2015-01-15 23:05:20
回答 2查看 3.7K关注 0票数 0

我正在尝试使用Windows计算机SSH到Mac服务器,运行一个程序,然后将输出数据传输回我的Windows。我已经能够使用Putty成功地手动完成此操作。

现在,我正在尝试使用Plink自动化这个过程。我已经将Plink添加到我的Windows路径中,因此,如果我打开cmd并键入命令,我就可以成功登录并将命令传递给服务器:

但是,我想使用R将其自动化,以简化数据分析过程。根据一些搜索,互联网似乎认为shell命令最适合这项任务。不幸的是,它似乎没有找到Plink,尽管通过shell向终端传递命令是有效的:

如果我尝试相同的操作,但是使用shell手动设置Plink的路径,不会返回任何输出,但命令似乎不会运行(例如,没有创建TESTFOLDER ):

有人知道为什么当我尝试从R调用Plink时,它不可用吗?或者,如果有关于如何在R中实现这一点的其他想法,也将不胜感激。

提前谢谢你,-sam

EN

回答 2

Stack Overflow用户

发布于 2015-05-21 03:34:06

我来这里是为了寻找这个问题的答案,所以我只能提供这么多,但我想我已经设法使用shell函数在R中实现了PLINK的初始步骤……

这是对我有效的方法:

R:中的NOT

  • 安装PLINK并将其位置添加到您的路径中。
  • 从PLINK的教程(http://pngu.mgh.harvard.edu/~purcell/plink/tutorial.shtml)下载示例文件,并将它们放在路径不包含空格的文件夹中(除非您知道我不知道的内容,在这种情况下,请将其空格)。

然后,在R中::

代码语言:javascript
复制
## Set your working directory as the path to the PLINK program files: ##
setwd("C:/Program Files/plink-1.07-dos")

##  Use shell to check that you are now in the right directory: ##
shell("cd")

## At this point, the command "plink" should be at least be recognized
# (though you may get a different error)
shell("plink")

## Open the PLINK example files ##
# FYI mine are in "C:/PLINK/", so replace that accordingly...
shell("plink --file C:\\PLINK\\hapmap1") 

## Make a binary PED file ##
# (provide the full path, not just the file name)
shell("plink --file C:\\PLINK\\hapmap1 --make-bed --out C:\\PLINK\\hapmap1")

..。诸若此类。

这就是我到目前为止所做的一切。但如果幸运的话,镜像这些代码行的结构和通用格式应该允许您在R中使用PLINK做您喜欢的事情。

希望这能有所帮助!

PS。当您运行上面的代码行时,PLINK输出应该只会在R控制台中打印出来。

万事如意,

- CC.

票数 2
EN

Stack Overflow用户

发布于 2015-05-21 07:14:02

我看到了Caitlin的回复,这提醒了我,我从来没有更新过我的解决方案。我的方法是一种变通的方法,而不是解决我的特定问题,但它可能对其他人有用。

将Plink添加到我的路径后,我在Windows中创建了一个包含所有Plink命令的批处理脚本,然后使用命令shell从R调用批处理脚本:

所以,在R中:

代码语言:javascript
复制
shell('BatchScript.bat')

批处理脚本包含了我想在Plink中使用的所有命令:

代码语言:javascript
复制
:: transfer file to phosphorus
pscp C:\Users\Sam\...\file zipper@144.**.**.208:/home/zipper/

:: open connection to Dolphin using plink
plink -ssh zipper@144.**.**.208 Batch_Script_With_Remote_Machine_Commands.bat

:: transfer output back to local machine
pscp zipper@144.**.**.208:/home/zipper/output/ C:\Users\Sam\..\output\

希望这对某些人有帮助!

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

https://stackoverflow.com/questions/27966399

复制
相关文章

相似问题

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