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 才能理解 为什么 我做了我所做的更改。例如,在您的代码中,您给出了示例向量 x
和 y
,但随后绘制了数据框 planilha2
中的列。你能明白为什么我必须将 plot()
函数更改为 运行 吗?
我正在尝试在图表中的 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 才能理解 为什么 我做了我所做的更改。例如,在您的代码中,您给出了示例向量 x
和 y
,但随后绘制了数据框 planilha2
中的列。你能明白为什么我必须将 plot()
函数更改为 运行 吗?