楼主: 天狮
46499 17

[有偿编程] 如何安装和调试Rtools [推广有奖]

  • 1关注
  • 10粉丝

已卖:3427份资源

教授

34%

还不是VIP/贵宾

-

威望
1
论坛币
6262 个
通用积分
355.1019
学术水平
20 点
热心指数
35 点
信用等级
13 点
经验
18386 点
帖子
1396
精华
0
在线时间
533 小时
注册时间
2008-10-10
最后登录
2025-9-4

楼主
天狮 发表于 2011-7-1 17:11:42 |AI写论文
5论坛币
由于epoh老师的帮助,我初步知晓了如何将R和C进行混合编程
请见帖子:https://bbs.pinggu.org/thread-1126777-1-1.html
但在那里我使用的是epoh老师提供的dll文件,并没有自己去生成dll文件

后来我又到论坛逛了逛,发现了一个epoh老师如何设置Rtools的帖子
请见:https://bbs.pinggu.org/thread-920948-1-1.html
在那里epoh老师详细地予以了介绍,我按部就班的进行了操作,但是还是有问题。
1,首先说明我的操作系统是预装的vista homebasic
2,   我用的是R 2.12.2
3,我下载的是Rtools 2.12
4,我在安装安装Rtools 2.12的时候除了安装语言选英语和安装路径更换为D:\setup\Rtools外,其他未调整。
5,我按照epoh老师的要求先测试MinGW。
(1)打开Command Prompt,
(2)然后c>gcc --help (vista中命令提示符是c>,而不是epoh老师那里的c:\>gcc --help )
结果显示:
'GCC--HELP' is not recognized as an internal or external command ,
operable program or batch file
输入c>gcc
同样显示:
'GCC' is not recognized as an internal or external command ,
operable program or batch file
(3)然后安装epoh老师的要求增设MinGW路径和R的路径
即:计算机(点右键)—属性—高级系统设置—高级—环境变量—系统变量
在那里我发现没有Rtools的路径,便新建了路径,变量名是path,变量值是D:\setup\Rtools\bin
因为我的R装在D:\setup\R software
所以我将变量名path下的变量值变为D:\setup\Rtools\bin;D:\setup\Rtools\MinGW\bin;D:\setup\R software\R-2.12.2\bin
中间用分号隔开。
(4)我以为我已经设置好了,再进行测试,打开Command Prompt—输入c>gcc --help
结果还是显示:
'GCC--HELP' is not recognized as an internal or external command ,
operable program or batch file
于是我就有些许的绝望了,不知如何是好。真不希望是操作系统的原因,因为R的跨平台性是很好的(推出Rtools也很好吧)

希望各位老师和同学指点迷津。

其实我的问题简单述来就是:如何用Rtools生成相应的dll文件。

在我贴出的第二个帖子里,epoh老师给了
/* File: matprod1.c */
/* Calculates the product of two matrices X and Y */

void matprod1(double *X, int *nrX, int *ncX,
              double *Y, int *nrY, int *ncY, double *ans)
{
  double sum;
  int ii, jj, kk;
  
  for (ii=0; ii<*nrX; ii++){
    for (jj=0; jj<*ncY; jj++){
      sum = 0;
      for (kk=0; kk<*ncX; kk++){
        sum = sum + X[ii+*nrX*kk]*Y[kk+*nrY*jj];
      }
      ans[ii+*nrX*jj] = sum;
    }
  }
}

告诉我们将其用记事本存为matprod1.c
但由于我的Rtools没有调试好,所以不能产生以下步骤:

在c碟放进 matprod1.c文件(不可放桌面)

  in "Command Prompt" window


  type Rcmd SHLIB matprod1.c


  就是:


  c:\>Rcmd SHLIB matprod1.c


  将会产生两个文件matprod1.dll,matprod1.o

即不能得到我们需要的matprod1.dll






最佳答案

epoh 查看完整内容

麻烦你先做两件事: 1.c:\>path #press enter 确认一下路径是否依你所言设置好 D:\setup\Rtools\bin;D:\setup\Rtools\MinGW\bin;D:\setup\R software\R-2.12.2\bin 2.执行下列程序,看结果如何 于 C:/Users/lenovo/Documents 建立文件夹convolve,放入文件convolve.c 然后在R运行 ############ setwd('C:/Users/lenovo/Documents/convolve') system("R CMD SHLIB convolve.c") #产生两个文件convolve.d ...
关键词:Rtools Tools Tool OLS RTO 调试 Rtools
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h894510055 + 1 + 1 + 1 好问题

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

沙发
epoh 发表于 2011-7-1 17:11:43
麻烦你先做两件事:
1.c:\>path     #press enter
    确认一下路径是否依你所言设置好
  D:\setup\Rtools\bin;D:\setup\Rtools\MinGW\bin;D:\setup\R software\R-2.12.2\bin

2.执行下列程序,看结果如何
  于 C:/Users/lenovo/Documents
    建立文件夹convolve,放入文件convolve.c

然后在R运行
############
setwd('C:/Users/lenovo/Documents/convolve')
system("R CMD SHLIB convolve.c") #产生两个文件convolve.dll,convolve.o
                                                                #windows 用到convolve.dll
dyn.load("convolve.dll")

conv <- function(a, b){
.C("convolve",
as.double(a), as.integer(length(a)),
as.double(b), as.integer(length(b)),
ab=double(length(a)+length(b)-1))$ab
}

conv(c(1,4),c(1,1)
conv(c(1,2,2),conv(c(1,4),c(1,1)))
已有 3 人评分经验 学术水平 热心指数 信用等级 收起 理由
dxystata + 20 + 1 热心帮助其他会员
h894510055 + 1 + 1 + 1 观点有启发
zhangtao + 5 + 5 + 5 好的意见建议

总评分: 经验 + 20  学术水平 + 6  热心指数 + 7  信用等级 + 6   查看全部评分

藤椅
天狮 发表于 2011-7-3 20:22:46
谢谢epoh老师!

板凳
h3327156 发表于 2011-7-5 04:32:45
楼主提到
其实我的问题简单述来就是:如何用Rtools生成相应的dll文件。
epoh 发表于 2011-7-1 17:11
然后在R运行
############
setwd('C:/Users/lenovo/Documents/convolve')
system("R CMD SHLIB convolve.c")


我个人是R与C的新手,不敢多说。
但我曾在网上看到一个说明,
http://sites.google.com/site/rprojectnotes/advanced_r/r_and_c
似乎,要注意是否是Windows环境。恰好那个网址是matprod1的例子。
我想楼主应当可以参考看看。

报纸
h3327156 发表于 2011-7-5 04:37:56
http://sites.google.com/site/rprojectnotes/advanced_r/r_and_c
参考看看。
似乎Windows与Unix环境下,指令会有所不太一样。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h894510055 + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
kk22boy 发表于 2012-2-27 18:40:58
这个是真有用!
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

7
吉林小王子 在职认证  发表于 2012-2-28 07:08:19
学习了,编程是弱项。。。

8
wxc0429 发表于 2012-5-28 23:27:51
为什么我会出现这样的错误提示呢?
cygwin warning:
  MS-DOS style path detected: d:/PROGRA~1/R/R-215~1.0/etc/i386/Makeconf
  Preferred POSIX equivalent is: /cygdrive/d/PROGRA~1/R/R-215~1.0/etc/i386/Makeconf
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
/bin/Rscript.exe: not found
/bin/Rscript.exe: not found
/bin/Rscript.exe: not found
/bin/Rscript.exe: not found
gcc -shared -s -static-libgcc -o convolve.dll tmp.def convolve.o -L/bin/i386 -lR
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lR
collect2: ld returned 1 exit status
>                                   #windows 用到convolve.dll
> dyn.load("convolve.dll")
错误于inDL(x, as.logical(local), as.logical(now), ...) :
  无法载入共享目标对象‘D:/c_course/convolve/convolve.dll’::
  LoadLibrary failure:  找不到指定的模块。
所谓模型,就是用统计语言简化了的现实世界;越贴近实际情况,效果越佳。

9
epoh 发表于 2012-5-29 15:47:18
wxc0429 发表于 2012-5-28 23:27
为什么我会出现这样的错误提示呢?
cygwin warning:
  MS-DOS style path detected: d:/PROGRA~1/R/R-215 ...
我刚又测试了一下
R version 2.15.0 (2012-03-30)
Rtools215.exe
还是OK的,麻烦你再自行检查一下"path"
应该是路径没设好
别急,路径永远是初学的梦靥

10
epoh 发表于 2012-5-29 15:54:07
wxc0429 发表于 2012-5-28 23:27
为什么我会出现这样的错误提示呢?
cygwin warning:
  MS-DOS style path detected: d:/PROGRA~1/R/R-215 ...
初判你似乎没有加进R的路径
C:\Program Files\R\R-2.15.0\bin\i386
已有 1 人评分论坛币 学术水平 收起 理由
yahoocom + 20 + 1 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-22 05:54