【问题标题】:How to include variable values in histogram titles in R - using by()如何在 R 中的直方图标题中包含变量值 - 使用 by()
【发布时间】:2012-09-18 17:31:29
【问题描述】:

我想使用 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)

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

【问题讨论】:

    标签: r title histogram


    【解决方案1】:

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

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

    制作了两个标有Condition1Condition2的地块

    【讨论】:

    • 谢谢。对于第二部分,在 by() 中使用 2 个因子,我可以在 main="" 参数中使用 paste(unique(x$Variable1), unique(x$Variable2), sep=", ")
    • 我不明白你的评论。当函数在评估第一个子集时,Variable1 将只有一个值,在评估第二个子集时也是如此。
    • @DWin,这真的很酷!我没想过拆分data.frame 本身并从那里开始工作。 CCID 的评论在完整问题的上下文中是有道理的(他们询问如何按两个变量进行拆分),这将导致(在此示例中)将“x”拆分为 10 data.frames。
    • @CCID:我想我明白你的意思(迟来的)。您在谈论 N x M 交叉的更一般情况,是的,您的方法应该适用于此。显然我只是错过了我渴望展示整个数据帧拆分方法的两个因素。
    • 是的,它只是将两个变量放入标题中。感谢您的回答,也感谢@mrdwab。
    【解决方案2】:

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

    temp <- split(x$Value, list(x$Variable2, x$Variable1))
    lapply(names(temp), function(x) hist(temp[[x]], main = x, xlab = "Value"))
    

    【讨论】:

    • 有趣的是,您没有在整个数据帧上使用lapply(split(.), fun)-方法。我就是这样学会的,认为是“分裂”的存在理由。
    • @DWin,我绝对看到了您方法中的智慧!老实说,我没有任何真正的编程背景,我只是出于好奇而非正式地自学 R,因为我发现编程有点……嗯……平静。到目前为止,我发现 Stack Overflow 是一个很好的学习平台。
    • 您当然是一个快速学习者。我认为 SO 在自学方面比 r-help 更好,因为它可以编辑,但是 r-help 和 r-devel 邮件列表仍然有更多的 R-Core 参与,所以它们真的是一个可以努力的地方问题。
    猜你喜欢
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多