0

我想使用 by() 生成直方图,如何访问因子的值,以包含在直方图标题中,例如...

a <- runif(500, 0, 10)
b <- LETTERS[1:5]
c <- c("Condition1", "Condition2")

x <- data.frame("Variable1" = b, "Variable2"= c, "Value"=a)
head(x)
by(x$Value, x$Variable2, hist)

或使用两个变量

by(x$Value, list(x$Variable2, x$Variable1), hist)

有没有办法使用 中的选项将变量值(例如 Condition1)传递给直方图的标题hist(),例如function(x) hist(x, main=...)放入by()

4

2 回答 2

4

传递拆分的数据框而不仅仅是值。然后你将有更多的工作:

by(x, x$Variable2, function(x) hist(x$Value, main=unique(x$Variable2) ) )

生产了两个标有标签的地块Condition1Condition2

于 2012-09-18T18:03:19.827 回答
2

这并不能真正回答您的问题,因为您指定使用by(),但我通常使用split()andlapply()来解决这些类型的问题。我的方法通常是这样的:

temp <- split(x$Value, list(x$Variable2, x$Variable1))
lapply(names(temp), function(x) hist(temp[[x]], main = x, xlab = "Value"))
于 2012-09-18T18:16:54.237 回答