楼主: baiygggg
24564 9

R软件的全局变量怎么定义? [推广有奖]

  • 0关注
  • 4粉丝

已卖:908份资源

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
315 个
通用积分
15.0407
学术水平
11 点
热心指数
17 点
信用等级
11 点
经验
1347 点
帖子
315
精华
0
在线时间
443 小时
注册时间
2009-11-3
最后登录
2024-12-20

楼主
baiygggg 发表于 2010-10-13 09:27:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问:R软件的全局变量怎么定义?
       另外,在调用函数过程中,函数内的变量都是局部变量,怎样调用函数里面产生的局部变量?最好可以通过不改动函数实现
谢谢指点!
二维码

扫码加我 拉你入群

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

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

关键词:r软件 软件 变量 定义 全局

回帖推荐

shenbaiseshatan 发表于7楼  查看完整内容

4# baiygggg 我觉得通过如下步骤大致可以解决你的问题,首先找出你需要函数的源代码,将其复制,在更改其中需要更改的部分后定义为自定义函数,这样你就可以在以后的程序中使用你需要的内容,并且不会影响程序的连续性。对于楼主的要求,在R中还不知道如何实现,直觉上R貌似并不像C那样底层的代码一样可以达成这个全局变量的要求,感觉函数既然都封装好了,而且R语言的扩展包那么多,如果调用时遇到全局变量的话不是有可能会引起 ...

dufegao 发表于3楼  查看完整内容

另外一种方法是在脚本最外层定义变量,在脚本函数中用

shenbaiseshatan 发表于2楼  查看完整内容

将你需要调用的局部变量return()出来就可以了

本帖被以下文库推荐

沙发
shenbaiseshatan 在职认证  发表于 2010-10-13 16:51:14
将你需要调用的局部变量return()出来就可以了
胜人者有力,自胜者强!

藤椅
dufegao 发表于 2010-10-13 21:51:56
另外一种方法是在脚本最外层定义变量,在脚本函数中用 <<- 给变量赋值就可以了

板凳
baiygggg 发表于 2010-10-14 00:25:55
谢谢两位,这两个方法都试过,确实可以,但要改函数代码,如果函数是已经写好的,最好不要改动,如果每次运行都要改动,而原来的函数又不便改动,那么会比较麻烦,比如调用包里的函数,如果调用一次改一次总是不好的,还有,如果运行过程中要改代码,程序执行时就不具有连续性,比如很多时候需要一次运行完整个脚本文件,其中很有可能多次调用包里的函数。
有没有不改动函数的方法呢?比如,有没声明某个变量是全局变量或函数中产生的变量是全局变量的方法?
谢谢!

报纸
qoiqpwqr 发表于 2010-10-14 02:20:07
貌似不行吧。

地板
baiygggg 发表于 2010-10-14 09:11:48
Thank you!

7
shenbaiseshatan 在职认证  发表于 2010-10-14 09:36:02
4# baiygggg
我觉得通过如下步骤大致可以解决你的问题,首先找出你需要函数的源代码,将其复制,在更改其中需要更改的部分后定义为自定义函数,这样你就可以在以后的程序中使用你需要的内容,并且不会影响程序的连续性。对于楼主的要求,在R中还不知道如何实现,直觉上R貌似并不像C那样底层的代码一样可以达成这个全局变量的要求,感觉函数既然都封装好了,而且R语言的扩展包那么多,如果调用时遇到全局变量的话不是有可能会引起程序出错?我的建议是曲线救国,能达到目的就好了。
胜人者有力,自胜者强!

8
baiygggg 发表于 2010-10-14 13:23:18
谢谢shenbaiseshatan
你的方法真的是个好办法!

9
njuedu 发表于 2019-1-3 23:06:31
举个例子
f1=function(x,y){a=x+y+y*2;return(a)}
f1(2,3)
运行上两行代码只会返回11,但是无法调用a这个值,全局环境中也不存在a这个变量。
但是,运行如下代码:
f2=function(x,y){a <<- x+y+y*2;return(a)}
f2(2,3)
会发现全局环境中产生了一个叫做a的变量。<<- 的作用是为全局变量赋值。

10
seawan 发表于 2019-2-11 13:40:40
njuedu 发表于 2019-1-3 23:06
举个例子
f1=function(x,y){a=x+y+y*2;return(a)}
f1(2,3)
正解!这才是使用全局变量的方法。
实际上,引用全局变量不需要特殊的操作。例如
a=3;
b=function c(){
d=a*a
}
上面直接在函数内部使用a。
但是如果要修改全局变量,则可使用<<-

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

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