我已将程序从R翻译成C ++。有问题的程序使用不同的值运行自身的多次迭代,然后生成直方图和绘图。 C ++图是挑剔的,所以我决定以csv格式保存值并将它们绘制在R中。文件相当大,对于较小尺寸的文件,10次迭代产生23000行和3列。当然,这种增加会在100或1000次迭代中大幅增加。 csv文件的格式是 1,3,0.0107171 它对应于col num,row num和data。然后我把它运行到R:
>data<-read.csv(file.choose(),header=T)
>plot(data,type="b", pch=19, xlab="X", ylab="Y")
Error in plot.default(...) :
formal argument "type" matched by multiple actual arguments
作为旁注:
> hist(data[,3], xlab="Step length (m)", main="")
直方图没有任何问题。请告诉我,如果我能提供更多细节,我对R来说不是很好,所以我可能会遗漏一些明显的东西。提前谢谢。
答案 0 :(得分:5)
您正在将一个data.frame传递给plot
,该plot.data.frame
将调度pairs(data.matrix(data))
,对于包含2列以上数据的数据框,将调用
...
所以你可以在pairs
中传递对type
有效的参数(plot
不是)
但是我想你可能想要考虑你想从你的数据中绘制什么
然后根据需要创建对matplot
(或者{{1}})的调用。
答案 1 :(得分:0)
就我而言,这表明我的输入数据结构不是数字。
我使用as.numeric
来解决它,如下所示:
plot(as.numeric(df[1, 1:9]), as.numeric(df[2, 1:9]),
las = 2, type = "l",
col = colrs[3],lwd = lwds[1], ylim = c(0, 1.05*maxnumb), xlim = c(-0.6, yAx), main = weDraw, ylab = "OD 600", xlab = "hours", xaxt = "n")
答案 2 :(得分:-2)
很抱歉迟到的回复。我遇到了这个,这是因为从另一个函数内部传递了一个data.frame。解决方法是简单地做到这一点:
do.plot <- function(df = plot.df[c(1, 2), ])
{
的 as.matrix(DF)强>
plot(.....)}