我試圖撰寫一個函式,它接受三個引數,X、Y、Z,其中 X 是一個數字向量,Y 是因子向量,它對 X 進行分組,Z 是置信區間的 alpha。我已經在函式之外撰寫了代碼,以便學習并首先嘗試它是否正常作業。這是我到目前為止得到的:
data(chickwts)
groups <- as.factor(chickwts[,2])
nr_groups <- levels(groups)
result <- matrix(0, nrow = length(nr_groups), ncol = 4)
colnames(result) <- c("Lower CI", "Mean", "Upper CI", "Obs.")
rownames(result) <- levels(groups)
result[,4] <- table(chickwts[,2])
group_test <- by(chickwts[, 1], groups, t.test)
for (i in levels(groups)) {
tva <- (group_test[[i]])
result[,1] <- tva$conf.int
result[,3] <- tva$conf.int
result[,2] <- tva$estimate
}
呼叫結果并沒有給我我想要的東西:
result
Lower CI Mean Upper CI Obs.
casein 297.8875 328.9167 297.8875 12
horsebean 359.9458 328.9167 359.9458 10
linseed 297.8875 328.9167 297.8875 12
meatmeal 359.9458 328.9167 359.9458 11
soybean 297.8875 328.9167 297.8875 14
sunflower 359.9458 328.9167 359.9458 12
正如您可以看到列中除 Obs 之外的所有值。錯了。我正在嘗試在基本 R 中撰寫代碼并且沒有任何包。有人可以讓我知道如何繼續以及我做錯了什么嗎?謝謝!
uj5u.com熱心網友回復:
data(chickwts)
groups <- as.factor(chickwts[,2])
nr_groups <- levels(groups)
result <- matrix(0, nrow = length(nr_groups), ncol = 4)
colnames(result) <- c("Lower CI", "Mean", "Upper CI", "Obs.")
rownames(result) <- levels(groups)
result[,4] <- table(chickwts[,2])
group_test <- by(chickwts[, 1], groups, t.test)
for (i in levels(groups)) {
tva <- (group_test[[i]])
result[i, 1] <- tva$conf.int[1]
result[i, 3] <- tva$conf.int[2]
result[i, 2] <- tva$estimate
}
回傳:
Lower CI Mean Upper CI Obs.
casein 282.6440 323.5833 364.5226 12
horsebean 132.5687 160.2000 187.8313 10
linseed 185.5610 218.7500 251.9390 12
meatmeal 233.3083 276.9091 320.5099 11
soybean 215.1754 246.4286 277.6818 14
sunflower 297.8875 328.9167 359.9458 12
uj5u.com熱心網友回復:
這是一種lapply方法。
data(chickwts)
groups <- factor(chickwts[, 2])
group_test <- by(chickwts[, 1], groups, t.test)
result <- lapply(group_test, \(tva){
res <- numeric(3)
res[1] <- tva$conf.int[1]
res[3] <- tva$conf.int[2]
res[2] <- tva$estimate
res
})
result <- do.call(rbind, result)
colnames(result) <- c("Lower CI", "Mean", "Upper CI")
result <- cbind(result, `Obs.` = table(chickwts[, 2]))
result
# Lower CI Mean Upper CI Obs.
#casein 282.6440 323.5833 364.5226 12
#horsebean 132.5687 160.2000 187.8313 10
#linseed 185.5610 218.7500 251.9390 12
#meatmeal 233.3083 276.9091 320.5099 11
#soybean 215.1754 246.4286 277.6818 14
#sunflower 297.8875 328.9167 359.9458 12
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326971.html
