R中二元运算符的非数字参数

时间:2017-06-10 00:32:04

标签: r string integer rstudio

我试图在图表中,在x行和y行中绘制一些数字。问题是我将数字格式化为3M为3.000.000,10k为10.000,然后我尝试使用axis函数将这些数字放入图表中,问题在于我和#39; m得到消息"二元运算符"

的非数字参数



x<-c(10000,20000,50000,200000)
y<-c(24679826,99532203,623224134,1422415645)
x1<-paste(format(round(x / 1e3, 1), trim = TRUE), "K")
y1<-c(paste(format(round(y / 1e6, 1), trim = TRUE), "M"))

options(scipen=999)
plot(planilha2$N,planilha2$Iteracoes_Insercao,type="b",
       xlab="Tamanho dos Vetores",
       ylab="Numero de iterações",
       xaxt="n",yaxt="n",pch=16,col="red",lwd=2.2,
       main="Inserção iterativo (Vetores gerados aleatoriamente)", 
       cex.main=1)

axis(1, (paste(format(round(x1 / 1e3, 1), trim = TRUE), "K")))
axis(2,paste(round(y / 1e6, 1), trim = TRUE), "M")
&#13;
&#13;
&#13;

enter image description here

1 个答案:

答案 0 :(得分:0)

这里要解决几件事:

首先,您收到的错误告诉您:您正在将一些需要数值的函数应用于非数字值。在这种情况下,它是:x1/ 1e3。 x1在字符向量之前设置了几行。它是一组字符串,因此您无法将其除以1e3。我假设这是一个拼写错误,你的意思是x而不是x1

接下来,您缺少axis()函数的一些参数。您需要告诉axis()哪些点绘制标签要绘制的标签。请参阅axis()函数的文档。

为了帮助你,我修改了代码,以便在这里绘制一个图:

x<-c(10000,20000,50000,200000)
y<-c(24679826,99532203,623224134,1422415645)

options(scipen=999)
plot(x, y,type="b",
     xlab="Tamanho dos Vetores",
     ylab="Numero de iterações",
     xaxt="n",yaxt="n",pch=16,col="red",lwd=2.2,
     main="Inserção iterativo (Vetores gerados aleatoriamente)", 
     cex.main=1)

axis(1, x,  labels = paste(format(round(x / 1e3, 1), trim = TRUE), "K"))
axis(2, y, labels = paste(format(round(y / 1e6, 1), trim = TRUE), "M"))

但是,您可能需要做一些阅读/实验来理解为什么我做了我所做的更改。例如,在您的代码中,您提供了示例向量xy,但随后绘制了数据框planilha2中的列。你能看出为什么我必须更改plot()函数才能运行你的例子吗?