关于循环:R:重复操作n次并存储在向量中 | 珊瑚贝

R: Repeat operation n times and store in vector


我有以下代码从 8 个观察值中随机抽取 3 个样本,然后计算变异系数 (CV)。

1
2
3
4
5
6
7
8
9
10
d <- c(4.34238,4.32101,4.35023,4.44773,4.24697,4.08944,4.28733,4.46353)

# Random sampling with replacement:
i <- sample(1:8, 3, replace=TRUE)
X <- d[i]

meanX <- mean(X)
sdX <- sd(X)
cvX <- (sdX/meanX)*100
cvX

问题是,我想将其引导 10000 次并将值存储在向量中或导出为 csv,以便我以后可以计算平均 CV。

我发现代码 (i) 用于重复操作 n 次; (ii) 用于单独导出值。我怎么一起做这个?
谢谢。

额外的问题…
这是一种更有效的方法:-
(i) 每次随机采样 3/8 观察值,计算 CV,存储值?
(ii) 生成10000组采样观测值,计算CV,存储值?

  • 您能否为 d 提供一个可重现的示例?也就是说,不要发布数据的链接(或图片),而是发布一些我们可以在会话中轻松复制/粘贴的内容
  • 根据您的要求编辑了问题


我已经在向量 d 中创建了一个随机数矩阵,以便能够运行某些东西,但也许你可以使用下面的代码来让它工作!问候!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
d <- matrix(rnorm(100000), ncol=2)

n_bootstraps <- 50
cvX_vec = rep(0, n_bootstraps)

for (i in 1:n_bootstraps){
  i <- sample(1:8, 3, replace=TRUE)
  X <- d[i,2]
  meanX <- mean(X)
  sdX <- sd(X)
  cvX_vec[i] <- (sdX/meanX)*100
}

write.csv(x = cvX_vec, file =”./blah.csv”)


您可以使用 replicate 创建一个包含所有迭代的矩阵:

1
2
3
4
5
6
7
8
myfun <- function(){
  i <- sample(1:8, 3, replace=TRUE)
  X <- d[i,2]

  c(meanX = mean(X), sdX = sd(X), cvX = sd(X)/mean(X) * 100)
}

result <- replicate(5, myfun)

这可以使用 write.table 导出到 csv 文件:
write.table(result, “result.csv”)


来源:https://www.codenong.com/55812476/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8659.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?