楼主: rurosezwz
1120 4

[问答] 求教高手-R语言for循环问题 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
88 点
帖子
10
精华
0
在线时间
30 小时
注册时间
2018-12-7
最后登录
2021-10-12

楼主
rurosezwz 发表于 2021-4-6 13:46:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据如下:
> pat
    AC139   AT163
1       329         138
2       333  138/140
3 329/333        140
4       329  138/140
5 329/333        140
6       329  138/140

想要实现对pat$AC139列的3、5行赋排列组合式的值(329和329;329和333;333和329;333和333)
同时对pat$AT163列的2、4、6行赋排列组合式的值(138和138和138;138和138和140;138和140和138;138和140和140;
140和138和138;140和138和140;140和140和138;140和140和140)

执行如下命令:
> ac139<-permutations(x=c(329,333),k=2,replace=T)
> at163<-permutations(x=c(138,140),k=3,replace=T)
> for(i in 1:length(ac139[,1])){
+ for(j in 1:length(at163[,1])){
+ pat[which(pat[,1]=='329/333'),1]=ac139[i,]
+ pat[which(pat[,2]=='138/140'),2]=at163[j,]

+ print(pat)
+ }
+ }
返回结果倒是print了32个数组,但是全部都一样,如下:
  AC139 AT163
1   329   138
2   333   138
3   329   140
4   329   138
5   329   140
6   329   138

  AC139 AT163
1   329   138
2   333   138
3   329   140
4   329   138
5   329   140
6   329   138


i 和 j 根本就没循环取值,一直都只取了i=1和j=1时的值!
求教高手是怎么回事啊?

二维码

扫码加我 拉你入群

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

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

关键词:for循环 R语言 For length print

沙发
乐天天12300 发表于 2021-4-6 14:28:24
  1. expand.grid(c(138, 140), c(138, 140),c(138, 140))
  2. expand.grid(c(329, 333), c(329, 333))
复制代码

藤椅
rurosezwz 发表于 2021-4-8 21:51:21
谢谢乐天12300的解答。但用expand.grid命令代替permutations命令,结果仍然是一样的!
我感觉是循环命令有误,返回的始终是 i 和 j 取值 1 时对应的ac139和at163的行,没有继续给 i  赋值2、3、4 及 j 赋值2、3、4 ......

板凳
rurosezwz 发表于 2021-4-8 21:53:09
还请高手指点迷津

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

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