我有一個資料集R并進行了一些轉換,以計算對的最大資訊系數,(Y,X1)如下(Y,X2)所示:
dat <- as.data.frame(matrix(rnorm(100 * 5, mean = 0, sd = 1), 10, 5))
colnames(dat) <- c("Y",paste0("X",1:4))
dat$X1 <- 0.5*dat$Y
dat$X2 <- dat$Y^2
library(minerva)
X1res <- mine(dat$X1,dat$Y)$`MIC-R2`
X2res <- mine(dat$X2,dat$Y)$`MIC-R2`
然后,我檢查以下陳述句:
res1 <- ifelse(isTRUE(X1res <= 0.4),1,0)
res2 <- ifelse(isTRUE(X2res >= 0.6),1,0)
res3 <- ifelse(isTRUE(X1res <= 0.4 & X2res >= 0.6),1,0)
最后,我將程式復制了 10 次,如下所示:
res <- replicate(10, {
dat <- as.data.frame(matrix(rnorm(100 * 5, mean = 0, sd = 1), 10, 5))
colnames(dat) <- c("Y",paste0("X",1:4))
dat$X1 <- 0.5*dat$Y
dat$X2 <- dat$Y^2
library(minerva)
X1res <- mine(dat$X1,dat$Y)$`MIC-R2`
X2res <- mine(dat$X2,dat$Y)$`MIC-R2`
res1 <- ifelse(isTRUE(X1res <= 0.4),1,0)
res2 <- ifelse(isTRUE(X2res >= 0.6),1,0)
res3 <- ifelse(isTRUE(X1res <= 0.4 & X2res >= 0.6),1,0)
dplyr::lst(res1, res2, res3)
}, simplify = FALSE)
如何從結果串列中獲取上述 3 個陳述句的百分比,res1 = 20%即res2 = 70%和res3 = 20%
uj5u.com熱心網友回復:
m1 <- do.call(cbind, lapply(res, \(x) do.call(rbind, x)))
rowMeans(m1)* 100
library(dplyr)
bind_rows(res) %>%
summarise(across(everything(), ~ 100 * mean(.x)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525562.html
標籤:r列表循环复制
