楼主: stcopy
5927 8

[问答] 关于r的loop [推广有奖]

  • 0关注
  • 1粉丝

讲师

0%

还不是VIP/贵宾

-

威望
0
论坛币
87 个
通用积分
11.0052
学术水平
3 点
热心指数
3 点
信用等级
2 点
经验
22194 点
帖子
164
精华
0
在线时间
439 小时
注册时间
2008-7-13
最后登录
2024-1-1

楼主
stcopy 发表于 2013-2-3 22:34:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
i<-0
for (j in 1:3) {
     print(j)
   if (i==0&&j==2) {i<-(i+1)
     j<-(j-1)
     print(j+100)
   }
}

结果竟然是
[1] 1
[1] 2
[1] 101
[1] 3
为什么不是
[1] 1
[1] 2
[1] 101
[1] 2
[1] 3   ??

二维码

扫码加我 拉你入群

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

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

关键词:loop

沙发
jmpamao 发表于 2013-2-3 22:55:30
觉得是:for 和while 循环中止的区别。
for(是指定的)
while(i 不清楚具体变化的情况下,只通过逻辑判断)
。。。

按照你的思维, for(j in 1:3){
                            j=2
                          } 那不就是 死循环吗? j=2,就循环啊 循环。。。。

藤椅
stcopy 发表于 2013-2-4 02:22:29
对啊。。。俺以为r中loop如果按ls写法就是死循环。。。但是r还是照常走1->2->3, 奇怪啊

板凳
qoiqpwqr 发表于 2013-2-4 02:50:03
stcopy 发表于 2013-2-4 02:22
对啊。。。俺以为r中loop如果按ls写法就是死循环。。。但是r还是照常走1->2->3, 奇怪啊
二楼那个不是死循环

for(j in 1:3) {
    j=2
}

开始j=1,然后进入循环体赋值j=2,好了,循环体执行完毕,进入下一个循环j=2
开始j=2,然后进入循环体赋值j=2,好了,循环体执行完毕,进入下一个循环j=3
开始j=3,然后进入循环体赋值j=2,好了,循环体执行完毕,没有再多循环可以执行了,完了

已有 1 人评分学术水平 热心指数 收起 理由
kaifengedu + 1 + 1 热心帮助其他会员

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

报纸
stcopy 发表于 2013-2-4 06:13:28
qoiqpwqr 发表于 2013-2-4 02:50
二楼那个不是死循环

for(j in 1:3) {
那请问俺主题里的代码呢?

地板
qoiqpwqr 发表于 2013-2-4 06:37:31
stcopy 发表于 2013-2-4 06:13
那请问俺主题里的代码呢?
一步一步的来,一个道理

先看循环j=1,会有什么结果。然后j=2,j=3

7
stcopy 发表于 2013-2-4 06:50:20
j=1 打印出1
然后j=2 打印出1 然后j<-(j-1) j变成了1 同时打印出101
接下来循环应该还是j=2啊 为啥直接变成了j=3?

8
qoiqpwqr 发表于 2013-2-4 08:33:26
stcopy 发表于 2013-2-4 06:50
j=1 打印出1
然后j=2 打印出1 然后j
循环是按照顺序来的 j = 1, 2, 3, 4, 5, ...
在每个循环体内,你可以对 j 随意赋值。但是到下一个循环开始的时候 j 总会变成比前一个循环多1的值,而不管前面循环体内 j 是多少

你开始的程序写出来其实就是

i <- 0

j <- 1
print(j)
if (i==0&&j==2) {
    i <- (i+1)
    j <- (j-1)
    print(j+100)
}

j <- 2
print(j)
if (i==0&&j==2) {
    i <- (i+1)
    j <- (j-1)
    print(j+100)
}

j <- 3
print(j)
if (i==0&&j==2) {
    i <- (i+1)
    j <- (j-1)
    print(j+100)
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
jmpamao + 1 + 1 + 1 热心

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

9
jmpamao 发表于 2013-2-4 12:49:22
stcopy 发表于 2013-2-4 02:22
对啊。。。俺以为r中loop如果按ls写法就是死循环。。。但是r还是照常走1->2->3, 奇怪啊
给楼主一个...更深印象的

for(j in 1:3){
j="hi stcopy"
print(j)
j=1.5555
print(j)
}
haha

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

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