R:重复操作n次,存入vector
R: Repeat operation n times and store in vector
我有以下代码可以从 8 个观测值中随机抽取 3 个,然后计算变异系数 (CV)。
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
问题是,我想 bootstrap 比如说,10000 次并将值存储在向量中或导出为 csv,以便我以后可以计算平均 CV。
我找到代码 (i) 重复操作 n 次; (ii) 单独导出值。我如何一起做这件事?
谢谢。
附加问题...
这是一种更有效的方法:-
(i) 每次随机抽取 3/8 的观察值,计算 CV,存储值?
(ii) 生成 10000 组采样观察值,计算 CV,存储值?
我已经在向量 d
中创建了一个随机数矩阵,以便能够 运行 一些东西,但也许您可以使用下面的代码来实现它!问候!
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
创建包含所有迭代的矩阵:
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.csv")
我有以下代码可以从 8 个观测值中随机抽取 3 个,然后计算变异系数 (CV)。
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
问题是,我想 bootstrap 比如说,10000 次并将值存储在向量中或导出为 csv,以便我以后可以计算平均 CV。
我找到代码 (i) 重复操作 n 次; (ii) 单独导出值。我如何一起做这件事? 谢谢。
附加问题... 这是一种更有效的方法:- (i) 每次随机抽取 3/8 的观察值,计算 CV,存储值? (ii) 生成 10000 组采样观察值,计算 CV,存储值?
我已经在向量 d
中创建了一个随机数矩阵,以便能够 运行 一些东西,但也许您可以使用下面的代码来实现它!问候!
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
创建包含所有迭代的矩阵:
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.csv")