我的 hist 函数没有在 R 中绘图,我该怎么办?
My hist function is not doing plots in R, what can i do?
我的 hist 函数没有在 R 中绘图,我该怎么办?
这是数据示例:
b=c(34,34,34,5,6,9,0,10,22,23)
t=hist(b)
t
输出为:
$breaks
[1] 0 5 10 15 20 25 30 35
$counts
[1] 2 3 0 0 2 0 3
$density
[1] 0.04 0.06 0.00 0.00 0.04 0.00 0.06
$mids
[1] 2.5 7.5 12.5 17.5 22.5 27.5 32.5
$xname
[1] "b"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
我能做什么?谢谢。
一般注意事项
您的 hist
函数 完全 它应该做什么。此函数主要用于它的副作用,即绘制直方图(当参数plot
是TRUE
时默认)。但是 value 函数 returns 是一个 list 有几个组件 (breaks
, counts
, density
、mids
、xname
、equidist
)。因此,当您调用 t = hist(b)
时,您将 值 return 由 hist
函数分配给变量 t
(顺便说一句 t
是 R 中的函数,我不会使用 t
作为变量名)。因此,当您调用 t
时,它会打印 returned 值,上面提到的 list,但 不是 plot 你可能希望看到的。
亲自动手(更新)
假设您的 objective 是要 保存 直方图并在后面绘制它,您可以使用以下观察结果:
可重现的数据
首先我们创建一个可重现的例子:
set.seed(72158867)
x <- rnorm(100)
这里我们给变量x
分配了100个随机值。
创建直方图,不作图,将结果赋给变量
现在我们准备创建直方图,并将hist()
计算的结果return赋值给变量h
:
h <- hist(x, plot = FALSE)
在这里,我们使用参数 plot = FALSE
告诉函数 return 结果 而无需绘制 .
检查h
的内容
值 return由hist()
编辑的是一个对象。我们可以深入研究这个对象,找到如何使用它来实现我们的 objectives.
returned 对象的结构
首先,我们可以使用 str()
函数检查 returned 对象的 结构 :
str(h)
# List of 6
# $ breaks : num [1:11] -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 ...
# $ counts : int [1:10] 5 8 15 20 17 14 14 5 1 1
# $ density : num [1:10] 0.1 0.16 0.3 0.4 0.34 0.28 0.28 0.1 0.02 0.02
# $ mids : num [1:10] -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25 2.75
# $ xname : chr "x"
# $ equidist: logi TRUE
# - attr(*, "class")= chr "histogram"
这里我们可以看到hist()
编辑的对象return是一个list-like结构,有几个元素。我们还可以看到结果 hist()
returned 是一个 class histogram
.
的对象
Class returned 对象
识别由 hist()
编辑的对象 return 的 class 的另一种方法是调用 class()
函数它。
class(h)
#[1] "histogram"
您还可以从您的控制台调用 ?hist
,并查找有关 returned 值 的信息 hist()
。
在 returned 对象上定义的方法
要找出方法定义在classhistogram
的对象上,我们可以使用methods()
函数,如图所示在下面的示例中:
methods(class = class(h))
# [1] lines plot
# see '?methods' for accessing help and source code
现在我们知道 class histogram
的对象接受两个方法 lines
和 plot
。我们对第一个不感兴趣(但我想知道它的作用),但第二个似乎是我们正在寻找的东西。
在 returned 对象上调用 plot
方法
让我们在 histogram
对象上调用 plot()
函数:
plot(h, col = 'skyblue', border = 'yellow', main = 'Histogram for SOq #72158867')
它按预期工作!
基本上,这就是 hist()
函数在您调用它时所做的事情:
- 它根据您的数据创建一个 class
histogram
的对象;
- 它在您的
histogram
对象上调用 plot
方法;
- 它无形地 return 生成了一个
histogram
对象。
当然还有更短的方法可以找到它。只需在您的控制台中输入 ?hist
,您将自己找到所有与 hist
相关的信息。
我的 hist 函数没有在 R 中绘图,我该怎么办? 这是数据示例:
b=c(34,34,34,5,6,9,0,10,22,23)
t=hist(b)
t
输出为:
$breaks
[1] 0 5 10 15 20 25 30 35
$counts
[1] 2 3 0 0 2 0 3
$density
[1] 0.04 0.06 0.00 0.00 0.04 0.00 0.06
$mids
[1] 2.5 7.5 12.5 17.5 22.5 27.5 32.5
$xname
[1] "b"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
我能做什么?谢谢。
一般注意事项
您的 hist
函数 完全 它应该做什么。此函数主要用于它的副作用,即绘制直方图(当参数plot
是TRUE
时默认)。但是 value 函数 returns 是一个 list 有几个组件 (breaks
, counts
, density
、mids
、xname
、equidist
)。因此,当您调用 t = hist(b)
时,您将 值 return 由 hist
函数分配给变量 t
(顺便说一句 t
是 R 中的函数,我不会使用 t
作为变量名)。因此,当您调用 t
时,它会打印 returned 值,上面提到的 list,但 不是 plot 你可能希望看到的。
亲自动手(更新)
假设您的 objective 是要 保存 直方图并在后面绘制它,您可以使用以下观察结果:
可重现的数据
首先我们创建一个可重现的例子:
set.seed(72158867)
x <- rnorm(100)
这里我们给变量x
分配了100个随机值。
创建直方图,不作图,将结果赋给变量
现在我们准备创建直方图,并将hist()
计算的结果return赋值给变量h
:
h <- hist(x, plot = FALSE)
在这里,我们使用参数 plot = FALSE
告诉函数 return 结果 而无需绘制 .
检查h
的内容
值 return由hist()
编辑的是一个对象。我们可以深入研究这个对象,找到如何使用它来实现我们的 objectives.
returned 对象的结构
首先,我们可以使用 str()
函数检查 returned 对象的 结构 :
str(h)
# List of 6
# $ breaks : num [1:11] -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 ...
# $ counts : int [1:10] 5 8 15 20 17 14 14 5 1 1
# $ density : num [1:10] 0.1 0.16 0.3 0.4 0.34 0.28 0.28 0.1 0.02 0.02
# $ mids : num [1:10] -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25 2.75
# $ xname : chr "x"
# $ equidist: logi TRUE
# - attr(*, "class")= chr "histogram"
这里我们可以看到hist()
编辑的对象return是一个list-like结构,有几个元素。我们还可以看到结果 hist()
returned 是一个 class histogram
.
Class returned 对象
识别由 hist()
编辑的对象 return 的 class 的另一种方法是调用 class()
函数它。
class(h)
#[1] "histogram"
您还可以从您的控制台调用 ?hist
,并查找有关 returned 值 的信息 hist()
。
在 returned 对象上定义的方法
要找出方法定义在classhistogram
的对象上,我们可以使用methods()
函数,如图所示在下面的示例中:
methods(class = class(h))
# [1] lines plot
# see '?methods' for accessing help and source code
现在我们知道 class histogram
的对象接受两个方法 lines
和 plot
。我们对第一个不感兴趣(但我想知道它的作用),但第二个似乎是我们正在寻找的东西。
在 returned 对象上调用 plot
方法
让我们在 histogram
对象上调用 plot()
函数:
plot(h, col = 'skyblue', border = 'yellow', main = 'Histogram for SOq #72158867')
它按预期工作!
基本上,这就是 hist()
函数在您调用它时所做的事情:
- 它根据您的数据创建一个 class
histogram
的对象; - 它在您的
histogram
对象上调用plot
方法; - 它无形地 return 生成了一个
histogram
对象。
当然还有更短的方法可以找到它。只需在您的控制台中输入 ?hist
,您将自己找到所有与 hist
相关的信息。