我是使用R进行数据操作的新手,特别是dplyr,我试图编写一行代码来生成直方图,它给了我一个'x'必须是数字的错误,但我可以告诉'x '是数字。
我尝试运行的代码版本如下,并带有相应的错误:
mydata %>% filter(Type==1) %>% select(Amount) %>% hist()
Error in hist.default(.) : 'x' must be numeric
如果我将其更改为如下的箱形图,则可以完美地运行:
mydata %>% filter(Type==1) %>% select(Amount) %>% boxplot()
如果我刚跑:
mydata %>% filter(Type==1) %>% select(Amount)
我得到以下结果,将值显示为dbl:
# A tibble: 898 x 1
Amount
<dbl>
1 -1304.
2 -741.
3 -38.0
4 -1.13
5 0.
6 0.
7 0.
8 0.
9 0.
10 0.
# ... with 888 more rows**strong text**
此外,如果我运行以下代码,我会得到我正在寻找的直方图,但我不确定为什么我的原始代码行不起作用。
tmp <- mydata %>% filter(Type==1) %>% select(Amount)
hist(tmp$Amount)
我确信这很简单,但我认为使用select(Amount)语句会将该值传递给hist()函数,但这似乎并没有发生。对我来说奇怪的部分是我可以把它改成一个盒子图,它工作正常。我的原始代码有什么问题吗?
答案 0 :(得分:2)
从?hist
和?boxplot
,hist
接受数字向量作为数据,而boxplot
可以接受数字向量或列表。
要从管道返回数字向量,您可以使用pull
将列提取为向量,然后可以将其传递给hist
以进行绘图:
mydata %>% filter(Type==1) %>% pull(Amount) %>% hist()