R - 饼图,X值必须为正数。

7

我是一名新手,正在学习R语言,并从网上获取了一些关于国家的测试数据。目前,我正在尝试绘制图表,并在创建全球失业率的饼图时遇到了以下错误:

我发出了以下命令:

>values <- read.csv("D:\\test\\countrydata.csv")
>names(values)
 [1] "name"    "size"    "pop"    "unemployed" ...
>typeof(values$unemployed)
"integer"
>pie(values$pop)
Error in pie(values$unemployed) :
    'x' values must be positive
>pie(values$pop, na.rm=TRUE)
Error in pie(values$unemployed, na.rm=TRUE) :
    'x' values must be positive

我想要绘制的数据集是一组整数,全部为正数、0(感谢金姆)或NA。

在绘制整数时,0并不会造成问题,我已经尝试过了。

>pie(as.integer(c(0,1,2,3))

它运行良好。

我错过了什么?

谢谢和问候,

BillDoor


2
奇怪。你执行了 pie(values$pop),但是错误消息显示 Error in pie(values$unemployed)?你想要一个 pop 的饼图,而错误消息却显示 unemployed?真的吗? - Spacedman
2
问题来自NA值。试试pie(as.integer(c(0,1,2,3,NA))),你会得到同样的错误...(而且pie函数中没有na.rm参数...) - Cath
...而且pie函数没有na.rm=TRUE参数。因为pie会将未匹配的参数作为图形参数读入,所以它不会将其视为错误。教训是:仅仅因为一个R函数有一个有用的na.rm参数,并不意味着所有函数都具备该参数。在R中不要期望一致性,始终阅读文档! - Spacedman
$pop是一个复制错误,因为在撰写这个问题时,我尝试了另一个集合,第一次尝试使用的是pop。 - billdoor
1
永远不要制作饼图。请阅读一些 Ed Tufte 的内容。 - Carl Witthoft
3个回答

10

我无法访问您的数据,但根据我的经验,以下措施可能会有所帮助,值得一试:

pie(table(values$unemployed))

很想知道这是否解决了你的问题!


0
根据R文档,第一个参数必须是“非负向量”。现在当我们写下以下代码时: pie(value$pop) R会将其视为数字数据框,您可以通过以下方式进行检查: str(value $ pop)。 当您通过as.numeric或as.integer进行类型转换时,您会将其转换为向量,这就是为什么它可以进行类型转换的原因: pie(as.numeric(value$pop))

0
我遇到了类似的问题。下面是解决方法:
vectorVal <- as.numeric(table) pie(vectorVal)

一个“第一次回答”!干得好。您提供的答案将两个单独的命令放在一行上,这在R中将是无效的语法。确保仔细检查您的解决方案以确保准确打印。也许使用代码块?此外,请向OP提供有关为什么您的答案解决了问题的额外指导。再次感谢您为SO社区做出贡献-您的帮助总是受到赞赏的。 - Marian Minar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接