全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3653 6
2016-05-30
捕获.PNG
如图,为什么第一个程序会报错
为什么把0赋值给b后,又正确了呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2016-5-30 21:02:38
第一个程序没有预先定义变量b啊  系统当然找不到这个变量
第二个程序正好解决了这个问题
二维码

扫码加我 拉你入群

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

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

2016-5-30 21:08:41
zhangqun448448 发表于 2016-5-30 21:02
第一个程序没有预先定义变量b啊  系统当然找不到这个变量
第二个程序正好解决了这个问题
太感谢了!
那么也就是说不一定要b=0喽,随便给b赋一个值,只要把它定义了就行了?
二维码

扫码加我 拉你入群

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

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

2016-5-30 22:46:32
capricorn2014 发表于 2016-5-30 21:08
太感谢了!
那么也就是说不一定要b=0喽,随便给b赋一个值,只要把它定义了就行了?
嗯  最好是预设一个类别吧  比如赋值一个空向量或者空列表或者空矩阵或者空数据框给它
二维码

扫码加我 拉你入群

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

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

2016-5-31 09:41:13
Same error happened with a, you should also define a first.
二维码

扫码加我 拉你入群

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

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

2016-5-31 10:14:08
补充一下:

首先,这个问题与在不在循环体内是无关的,在交互式环境下,也会出现同样的问题。

其次,在R语言当中,语法上是不需要预先定义变量的,在交互式环境下或者在程序中,用赋值语句 "<-","<<-","assign("a",1)"都可以直接赋值给未定义的变量,编译程序会自动根据赋值的内容确定变量的类型,自动分配内存地址,并将变量名与内存地址联系起来。这是R语言区别于其他语言的一个重要特点,既是R语言的灵活性所在,也是R语言的执行慢的重要原因之一。

最后,本案例的关键所在是'[<-'是一个build-in的“替换”函数,虽然也有一些“赋值”的功能,但主要是“替换”。当函数运行时`[<-`(b, i, i*5-4),会scoping变量b的值,发现没有,就停止执行,并提示出错的值。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群