大家好,我有兩個資料框試圖在我的 script1 中使用下面的 script1 進行引導,我正在從資料框一和二中獲取行數。我不想從整個資料框中獲取行號,而是希望將單個列拆分為一個資料框并洗掉零值,而不是使用行號而不是使用下面的腳本進行引導。因此,嘗試使用 script2 從 for 回圈創建單個資料幀,因為我是 R 新手,有點困惑如何有效地將 script1 函式添加到它
請在下面建議我我正在提供正在運行 script1 的腳本和 script2 我正在嘗試對每個列進行子集化,創建一個單獨的資料框
腳本1
set.seed(2)
m1 <- matrix(sample(c(0, 1:10), 100, replace = TRUE), 10)
m2 <- matrix(sample(c(0, 1:5), 50, replace = TRUE), 5)
m1 <- as.data.frame(m1)
m2 <- as.data.frame(m2)
nboot <- 1e3
n_m1 <- nrow(m1); n_m2 <- nrow(m2)
temp<- c()
for (j in seq_len(nboot)) {
boot <- sample(x = seq_len(n_m1), size = n_m2, replace = TRUE)
value <- colSums(m2)/colSums(m1[boot,])
temp <- rbind(temp, value)
}
boot_data<- apply(temp, 2, median)
腳本2
for (i in colnames(m1)){
m1_subset=(m1[m1[[i]] > 0, ])
m1_subset=m1_subset[i]
m2_subset=m2[m2[[i]] >0, ]
m2_subset=m2_subset[i]
num_m1 <- nrow(m1_subset); n_m2 <- nrow(m2_subset)# after this wanted add above script changing input
}
uj5u.com熱心網友回復:
如果我理解正確,您想在洗掉 0 值后分別對每一列進行采樣和計算。I. 修改您的代碼以處理單個向量而不是資料幀(即,使用length()代替nrow()和sum()代替colSums()。我還建議提前為您的結果創建空矩陣,并填寫 - 它將被禁食。
temp <- matrix(nrow = nboot, ncol = ncol(m1))
for (i in seq_along(m1)){
m1_subset = m1[m1[,i] > 0, i]
m2_subset = m2[m2[,i] > 0, i]
n_m1 <- length(m1_subset); n_m2 <- length(m2_subset)
for (j in seq_len(nboot)) {
boot <- sample(x = seq_len(n_m1), size = n_m2, replace = TRUE)
temp[j, i] <- sum(m2_subset)/sum(m1_subset[boot])
}
}
boot_data <- apply(temp, 2, median)
boot_data <- setNames(data.frame(t(boot_data)), names(m1))
boot_data
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481509.html
