R 使用Lattice软件包的条件直方图,输出图不正确

R 使用Lattice软件包的条件直方图,输出图不正确,r,conditional,histogram,lattice,trellis,R,Conditional,Histogram,Lattice,Trellis,我正在使用lattice包中的histogram来绘制两个直方图,这两个直方图针对一个变量,有两个选项:男性或女性 histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & (raw$Housework_Tot_Min < 1000)] | raw$Gender) 直方图(~raw$househork\u Tot\u Min[(raw$househork\u Tot\u Min!=0)& (未加工的$家务

我正在使用
lattice包中的
histogram
来绘制两个直方图,这两个直方图针对一个变量,有两个选项:男性或女性

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender)
直方图(~raw$househork\u Tot\u Min[(raw$househork\u Tot\u Min!=0)&
(未加工的$家务_Tot_Min<1000)|未加工的$性别)

但是,当我实际查看数据时,这些直方图是不正确的。通过绘图:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000) & (raw$Gender == "Female")]
直方图(~raw$househork\u Tot\u Min[(raw$househork\u Tot\u Min!=0)&
(原始$Household_Tot_Min<1000)和(原始$Gender==“女性”)]
以及:

直方图(~raw$househork\u Tot\u Min[(raw$househork\u Tot\u Min!=0)&
(原始$Household_Tot_Min<1000)和(原始$Gender==“男性”)]

有人知道为什么这些输出不匹配吗?我还有一堆二进制类型的面板要绘制,而必须单独绘制它们真的会破坏使用lattice软件包的目的


如果这掩盖了对简单概念的基本误解,我深表歉意,我仍然是R的初学者!非常感谢您的帮助。

问题与
panel.args.common
中的不同值有关(即所有面板函数的公共参数,请参见
?grillis.object
).这里有一些示例代码来阐明我的观点

library(lattice)

## paneled plot
hist1 <- histogram( ~ Sepal.Width | Species, data = iris)
hist1$panel.args.common

# $breaks
# [1] 1.904 2.228 2.552 2.876 3.200 3.524 3.848 4.172 4.496
# 
# $type
# [1] "percent"
#
# $equal.widths
# [1] TRUE
# 
# $nint
# [1] 8

## single plot    
hist2 <- histogram( ~ Sepal.Width, data = iris[iris$Species == "setosa", ])
hist2$panel.args.common

# $breaks
# [1] 2.216 2.540 2.864 3.188 3.512 3.836 4.160 4.484
# 
# $type
# [1] "percent"
# 
# $equal.widths
# [1] TRUE
# 
# $nint
# [1] 7

事实证明,问题在于基于使用括号应用的排除的数据不匹配。而不是:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender)
直方图(~raw$househork\u Tot\u Min[(raw$househork\u Tot\u Min!=0)&
(未加工的$家务_Tot_Min<1000)|未加工的$性别)
应改为:

histogram(~ Housework_Tot_Min [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)] | 
        Gender [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)], data = raw,
      main = "Time Observed Housework by Gender",
      xlab = "Minutes spent",
      breaks = seq(from = 0, to = 400, by = 20))
直方图(~Household_Tot_Min[(Household_Tot_Min!=0)和(Household_Tot_Min<1000)])
性别[(家务总人数!=0)和(家务总人数<1000)],数据=原始数据,
main=“按性别观察家务劳动的时间”,
xlab=“花费的分钟数”,
中断=顺序(从=0到=400,由=20)
注意,排除现在应用于家务时间和性别变量,消除了数据中的不匹配

正确的图已粘贴在下面。再次感谢大家的指导


请参阅。您至少应该提供一些示例数据,以使代码具有可复制性。注意:绘制数据子集时,1)在
data
参数中对data.frame进行子集,或2)使用
subset
参数。在公式中加入子集可能不是解决这个问题的方法;除了美学和节省键入$raw的时间之外,还有什么理由使用数据参数吗?只是好奇!谢谢你的帮助。但是,问题不是轴和料仓宽度不同。问题在于,在单性图上,雄性数据的最大值为c。150分钟。但是,在拆分面板中,分布完全不同(最大值也不同)。根据代码,为什么这两种类型的绘图不输出相同的值?再次感谢!啊,现在我明白你的意思了。您应该将此问题报告给,因为它可能需要开发人员站点的调节。
histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender)
histogram(~ Housework_Tot_Min [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)] | 
        Gender [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)], data = raw,
      main = "Time Observed Housework by Gender",
      xlab = "Minutes spent",
      breaks = seq(from = 0, to = 400, by = 20))