【发布时间】:2021-12-07 02:42:42
【问题描述】:
我正在尝试编写一个接受三个参数 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 中编写代码并且没有任何包。有人可以让我知道如何进行以及我做错了什么吗?谢谢!
【问题讨论】:
-
首先,您在 for 循环的每次迭代中都覆盖了整个列,其次,您对
result[,1] <- tva$conf.int和result[,3] <- tva$conf.int使用相同的值,第三,conf.int的长度为 2