请选择 进入手机版 | 继续访问电脑版
楼主: Aixir
1827 9

[实际应用] R语言,怎么把for循环的每一次结果提取其中一个参数,最后把所有参数放到一个矩阵里? [推广有奖]

  • 0关注
  • 0粉丝

VIP1+

大专生

83%

还不是VIP/贵宾

-

威望
0
论坛币
2959 个
通用积分
9.5081
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
265 点
帖子
24
精华
0
在线时间
96 小时
注册时间
2018-4-11
最后登录
2023-5-7

Aixir 发表于 2021-10-5 10:54:18 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本人小白,没接触过编程,大佬们能讲的细一点么?这是我瞎写的代码,也能运行
A <-NULL###结果矩阵
for (i in 1:4263) {###循环4263次
        REI <- mydata[,c(1,24)]###从整个数据集中提取需要的两列
        REI <- REI[1:1000+i,]###分别取数据集(两列的那个)的前1001行、1002行...直至全部数据集(一共5263行)
        a <- fitgpd(REI$实体指数损失率...,threshold = 5)$pat###运行一个函数,分别取出里面的一个参数
        A <- rbind(A,a)###将每次的参数作为一条数据追加到结果矩阵中
}


但是出了一些问题,按理说A矩阵里的最后一个数不应该是全部数据集运行函数后的参数么?
A矩阵最后一个数是0.024,如下

结果矩阵

结果矩阵

但我将全部数据运行后,得到的参数是0.0188,如下

全部数据运行函数结果

全部数据运行函数结果

这是咋回事啊?我该咋整啊?感谢大佬们指点
二维码

扫码加我 拉你入群

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

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

关键词:for循环 R语言 For

实体总指数.xlsx

12.58 MB

全部数据集

实体总指数(损失率).xlsx

1.07 MB

全部数据

s609078902 发表于 2021-10-5 17:55:32 |显示全部楼层 |坛友微信交流群
  1. A <- matrix(nrow = 4263, ncol = 2)
  2. for (i in 1:4263) {
  3.   REI <- mydata[1:1000+i, c(1, 24)]
  4.   A[i, ] <- fitgdp(REI, 5)$param
  5. }
复制代码
我用自己编的数据是没问题的,如何还不行,请把配图把问题描述清楚一些,并提供一些数据
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

Aixir 发表于 2021-10-5 19:37:17 |显示全部楼层 |坛友微信交流群
s609078902 发表于 2021-10-5 17:55
我用自己编的数据是没问题的,如何还不行,请把配图把问题描述清楚一些,并提供一些数据
感谢大佬抽空解答,但是还是不行,数据集跟图上传了,您的方法也试了,也不是我想要的结果,甚至跟全部数据集运行函数后的param值对不上。这个函数在POT包里,要不麻烦您运行下?

使用道具

s609078902 发表于 2021-10-6 10:04:05 |显示全部楼层 |坛友微信交流群
Aixir 发表于 2021-10-5 19:37
感谢大佬抽空解答,但是还是不行,数据集跟图上传了,您的方法也试了,也不是我想要的结果,甚至跟全部数 ...
没看到有实体指数损失率这个变量呀

使用道具

s609078902 发表于 2021-10-6 10:51:14 |显示全部楼层 |坛友微信交流群
Aixir 发表于 2021-10-5 19:37
感谢大佬抽空解答,但是还是不行,数据集跟图上传了,您的方法也试了,也不是我想要的结果,甚至跟全部数 ...
  1. A <- matrix(nrow = 4263, ncol = 1)
  2. for (i in 1:4263) {
  3.   A[i,] <- fitgpd(data[1:(1000+i), 12], 5)$pat
  4. }
复制代码
1. 问题出在 1:1000+i 的运算优先级上,写成 1:(1000+i) 这样就没问题了;
2. 执行 for 循环之前应该提前留好足够的空间储存结果,像我这里这样,可以提高执行速度;
3. 你注释给得太多了,反而会影响阅读代码的速度;
4. 赋值 REI 的两行语句可以合并成一行,也能提高点运行速度。

使用道具

s609078902 发表于 2021-10-6 10:58:44 |显示全部楼层 |坛友微信交流群
Aixir 发表于 2021-10-5 19:37
感谢大佬抽空解答,但是还是不行,数据集跟图上传了,您的方法也试了,也不是我想要的结果,甚至跟全部数 ...
  1. A <- matrix(nrow = 4263, ncol = 1)
  2. for (i in 1:4263) {
  3.   A[i,] <- fitgpd(data[1:(1000+i), 12], 1)$pat
  4. }
复制代码
1. 问题出在 1:1000+i 的运算优先级上,写成 1:(1000+i) 就没问题了;
2. 执行 for 循环之前应该预留足够的空间给结果, 像我这里这样,可以提高运行速度;
3. 你的注释太多了,会影响阅读代码的速度;
4. 复制 REI 的两行语句可以合并成一行,也可以提高运行速度。

使用道具

s609078902 发表于 2021-10-6 10:59:40 |显示全部楼层 |坛友微信交流群
Aixir 发表于 2021-10-5 19:37
感谢大佬抽空解答,但是还是不行,数据集跟图上传了,您的方法也试了,也不是我想要的结果,甚至跟全部数 ...
  1. A <- matrix(nrow = 4263, ncol = 1)
  2. for (i in 1:4263) {
  3.   A[i,] <- fitgpd(data[1:(1000+i), 12], 1)$pat
  4. }
复制代码
1. 问题出在 1:1000+i 的运算优先级上,写成 1:(1000+i) 就没问题了;
2. 执行 for 循环之前应该预留足够的空间给结果, 像我这里这样,可以提高运行速度;
3. 你的注释太多了,会影响阅读代码的速度;
4. 复制 REI 的两行语句可以合并成一行,也可以提高运行速度。

使用道具

Aixir 发表于 2021-10-6 21:00:20 |显示全部楼层 |坛友微信交流群
s609078902 发表于 2021-10-6 10:59
1. 问题出在 1:1000+i 的运算优先级上,写成 1:(1000+i) 就没问题了;
2. 执行 for 循环之前应该预留足够 ...
感谢大佬,今天太忙了,数据上传错了,不好意思,新数据已经上传了(错的那个数据我不知道咋撤回,就没撤),能在麻烦您抽空指点一下吗?万分感谢

使用道具

Aixir 发表于 2021-10-6 21:06:26 |显示全部楼层 |坛友微信交流群
s609078902 发表于 2021-10-6 10:59
1. 问题出在 1:1000+i 的运算优先级上,写成 1:(1000+i) 就没问题了;
2. 执行 for 循环之前应该预留足够 ...
感谢大神,已经试过了,数据对上了,万分感谢!

使用道具

naodai0702 发表于 2021-10-20 03:46:58 来自手机 |显示全部楼层 |坛友微信交流群
s609078902 发表于 2021-10-5 17:55
我用自己编的数据是没问题的,如何还不行,请把配图把问题描述清楚一些,并提供一些数据
您好 我是刚学习R语言的学生 请问可以咨询您一些R语言问题么 如果可以的话麻烦您联系我的邮箱1198993255@qq.com

使用道具

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

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

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

GMT+8, 2024-4-19 07:07