在 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
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