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

Non-numeric argument to binary operator in R

我正在尝试在图表中的 x 和 y 行中绘制一些数字。问题是我将数字格式化为 3M 表示 3.000.000,10k 表示 10.000,然后我尝试使用 axis 函数将这些数字放在图表中,问题是我得到了留言"Non-numeric argument to binary operator"

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")

enter image description here

这里有几件事要解决:

首先,您收到的错误告诉您:您正在将某个需要数值的函数应用到一个非数值的值。在本例中为: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"))

但是,您可能需要做一些 reading/experimentation 才能理解 为什么 我做了我所做的更改。例如,在您的代码中,您给出了示例向量 xy,但随后绘制了数据框 planilha2 中的列。你能明白为什么我必须将 plot() 函数更改为 运行 吗?