楼主: lolo525
16144 33

用C写了个函数,怎么在R中调用此函数? [推广有奖]

  • 0关注
  • 4粉丝

讲师

69%

还不是VIP/贵宾

-

威望
0
论坛币
29 个
通用积分
0.1387
学术水平
1 点
热心指数
5 点
信用等级
0 点
经验
10413 点
帖子
374
精华
0
在线时间
486 小时
注册时间
2008-10-27
最后登录
2014-5-5

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
这个问题困扰我很久了,一直没答案。有没有能详细指点的?

是不是还要将写好的C程序封装到R中,还是别的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:C程序 有没有 函数

本帖被以下文库推荐

沙发
epoh 发表于 2010-9-28 08:54:13 |只看作者 |坛友微信交流群
The MinGW compiler is required to compile the C function and
creates a .dll file on Windows.
just issue the following command in a command window:
       Rcmd SHLIB yourfile.c

Calling C functions from R using .C and .Call
Calling C functions from R using .C and .Call.pdf (111.54 KB)

使用道具

藤椅
lolo525 发表于 2010-9-28 13:01:28 |只看作者 |坛友微信交流群
2# epoh


万分感谢,敢问您是从哪里得到这份资料的?

我自己之前也找过都没找到

使用道具

板凳
lolo525 发表于 2010-9-28 16:12:21 |只看作者 |坛友微信交流群
2# epoh


怎么用那个MinGW complier?


我按照那个文档的例子,先是建了一个.c的文件,保存在桌面,而后开始,输入cmd进入commad window,然后输入Rcmd SHLIB matprod1.c,提示"Rcmd"不是内部或外部命令,也不是可运行的程序,怎么回事

使用道具

报纸
epoh 发表于 2010-9-28 18:15:13 |只看作者 |坛友微信交流群
1.先测试MinGW

  Open a "Command Prompt" window


  注意是"Command Prompt" window


  不是R Command window


  type gcc --help


  就是:


  c:\>gcc --help


  若成功,你可看到a list of options.


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

  in "Command Prompt" window


  type Rcmd SHLIB matprod1.c


  就是:


  c:\>Rcmd SHLIB matprod1.c


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


3.把matprod1.c,matprod1.dll放在

  R working directory,
开始执行 R code

.
  matprod1.dll
matprod1.rar (1.31 KB) 本附件包括:
  • matprod1.dll

使用道具

地板
lolo525 发表于 2010-9-28 19:18:05 |只看作者 |坛友微信交流群
5# epoh


不好意思啊,还是没看明白。

我把下载过来的Rtools装在了"G:\Program Files\Rtools\”文件夹中,这个有没有妨碍?


是在开始中运行"cmd"进入 command prompt 么。

是先建一个文本写入代码,最后命名为matprod1.c还是用其它的IDE先编译好?

使用道具

7
epoh 发表于 2010-9-28 19:43:28 |只看作者 |坛友微信交流群
Q1:是在开始中运行"cmd"进入 command prompt ?
      对
Q2:Rtools装在"G:\Program Files\Rtools\"..
      主要是检测路径是否设置正确
   请先执行
   c:\>gcc --help
     若成功,你可看到a list of options.
     有问题请告知
Q3:
   用NOTEPAD把下列这段存成matprod1.c
/* 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;
    }
  }
}

使用道具

8
lolo525 发表于 2010-9-28 19:55:42 |只看作者 |坛友微信交流群
7# epoh


第二步,输入cmd后,然后输入gcc --help

提示"gcc"不是内部或外部命令,也不是可运行的程序

使用道具

9
lolo525 发表于 2010-9-28 20:26:55 |只看作者 |坛友微信交流群
7# epoh

装了MinGw后,是不是还要进行些设置,这些要怎么设置?

文档中说"The compiler must be on your computers path. "  "In that case, the path to the MinGW compiler must appear before that to cygwin in your
search path."

我要怎么设置这些path?

我在装了Rtools后,就没有进行过任何设置

使用道具

10
epoh 发表于 2010-9-28 20:34:24 |只看作者 |坛友微信交流群
你没增设mingw路径
设置方法清参考 page4/15
请小心!勿改变原来设置.

Making R Packages Under Windows.pdf (197.86 KB)


right click on the "My Computer" icon on desktop
Choose properties
click on the advanced tab
Click the environmental variables button
selectsystem variable "path"
select the edit button
在最后面;
加入G:\Program Files\mingw\bin;
(请自行再检查一次,必须完全正确)


使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 23:49