楼主: coral90
2503 2

[问答] R调用fortran [推广有奖]

  • 0关注
  • 0粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
67 个
通用积分
1.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20618 点
帖子
263
精华
0
在线时间
341 小时
注册时间
2009-5-13
最后登录
2018-11-26

5论坛币
我装了Rtools,也定义了环境变量,一切显示正常,可是发现调用fortran的时候及其不稳定
我的fortran程序如下
   subroutine MYSUB(n,x)
   
    !DEC$ ATTRIBUTES DLLEXPORT, STDCALL:: MYSUB  
       implicit none
      
       integer:: n,i
       real:: x(n)
      
       do i=1,n
        x(i)=x(i)**2
       end do
      
       end

setwd("d:/R")
system("R CMD SHLIB mysub.f90")
dyn.load("mysub.dll")
is.loaded("mysub")
.C("mysub",as.integer(3),as.numeric(c(2,3,4)))
结果是
[[1]]
[1] 3

[[2]]
[1] 512   3   4
很是无语,这个512哪来的。。这是我的两个变量接口做的不对吗?


关键词:Fortran Fort For RAN R调用 system 程序
沙发
coral90 发表于 2014-1-13 07:35:11 |只看作者 |坛友微信交流群
求高手作答。。

使用道具

藤椅
xiaoswjp 发表于 2015-1-9 13:33:41 |只看作者 |坛友微信交流群
首先,fortran 所有参数都是以指针(Bjarne Stroustrup说是引用,就当指针好了)方式传递的,所以你看到数组后两个数据3和4根本就没变;
其次,你的知道R语言中数据是底层语言如何实现的,实数/数组等等,可能是用了class类啥的。数据时如何存的。
搞清楚这就OK了
关键是我不会R,所以只能帮你到这了;最好看看官方说明文档看看调fortran是怎么用,这样最简单了

使用道具

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

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

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

GMT+8, 2024-5-1 13:29