在 R 中使用 for 循环从数据框中采样行

sample rows from dataframe using for loop in R

nrow=600 和 ncol=18 给出了 df

现在我需要对每个列中的 10000 个样本进行替换。

根据规范,我首先需要创建一个空矩阵:

df1 <- as.data.frame(matrix(NA,nrow = 10000,ncol=18))

现在我想使用 for 循环一次完成所有样本(对于每一列):

for (i in 1:18){

df1[1:10000, i) <- sample(df[,i], 10 000, replace=true)

当我运行这段代码时,我的df1还是空的。

有人能帮忙吗?

非常感谢

您的代码中存在语法问题。尝试以下操作:

df1 <- as.data.frame(matrix(NA,nrow = 10000,ncol=18))

for (i in 1:18) {
  df1[, i] <- sample(df[, i], 10000, replace = TRUE)
}

没有显式的 for 循环你也可以使用 sapply/lapply :

#With `sapply`
df1 <- as.data.frame(sapply(df, sample, 1000, replace = TRUE))

#Using `lapply`

df1 <- do.call(cbind.data.frame, lapply(df, sample, 1000, replace = TRUE))

它适用于评论中共享的数据。

df <- data.frame(V1, V2, V3)
df1 <- as.data.frame(matrix(NA,nrow = 10000,ncol=3))

for (i in 1:3) {
  df1[, i] <- sample(df[, i], 10000, replace = TRUE)
}

dim(df1)
#[1] 10000     3

head(df1)
#           V1           V2           V3
#1  0.02527926  0.039423826  0.097738594
#2  0.03391239  0.039423826  0.036153091
#3  0.03919354 -0.004922473  0.097738594
#4 -0.06703827  0.039423826  0.097738594
#5  0.02168909  0.048176052  0.036153091
#6  0.02527926  0.074435079 -0.009444024