报错是在运行R程序时我们最不想看到的,但对于初学者来说又是不可避免的。很多问题虽然看上去再小白不过了,但确实是我在工作中常被问到的。那么如何在程序报错后快速找到原因呢?这里给大家总结了一些新手常见的报错,以及如何解决它们。
- unexpected symbol 应该是新手最常见的报错。在出现这类报错时,第一反应就是查看error中出现错误的位置,在这个例子中,出现问题的地方应该是第一行到第二行的dat之间。找到位置后,仔细查看该位置的代码是否缺少/多余符号,这个例子中,就是缺少一个右括号。此时,只要加上一个右括号,问题就迎刃而解。
dat <- as.data.frame(t(dat[,as.character(env$ID)])
dat <- dat[,-1]
Error: unexpected symbol in:
"dat <- as.data.frame(t(dat[,as.character(env$ID)])
dat"
- unexpected input,这个错误类似报错1,出现这类报错时,同样第一反应就是看报错位置的问号在哪,在该例子中,问号出现在table"之后,仔细看代码,会发现代码中问号所在的位置是一个中文格式的逗号。因此,将此逗号改成英文格式下的逗号就搞定了。
dat <- read.table("OTU_frequency_more2.table",header = T)
Error: unexpected input in "dat <- read.table("OTU_frequency_more2.table"?
- object not found 这类报错特别直观,就是找不到目标。在这个例子中,就是报错信息中的dat变量找不到。为什么会出现这种报错呢,真的是非常乌龙:第一行代码打在script上了却没有运行导致环境变量里没有叫dat的这个变量,第二行代码运行后自然就报这个错误啦~所以出现这类报错时,查看自己的环境变量是否缺少该目标,进而补充上就好啦。
dat <- as.data.frame(t(dat[,as.character(env$ID)])
dat <- dat[,-1]
Error: object 'dat' not found
-
'height'要么是向量,要么是矩阵,很多同学看到这报错第一反应:这啥意思?height是啥?当遇到不懂的函数时,就可以运行
?function
这个格式来查找对于该function的help。在这里我们运行?barplot
发现height即为函数的输入文件,于是可以知道这个报错就涉及到输入文件格式的问题了,报错上说明了barplot这个函数要求的输入文件格式应该是向量(vector)或者是矩阵(matrix),然而我们通过class(dat)
发现dat的格式是数据框(data.frame),显然与要求不符。因此,解决方法就是将数据框格式转为矩阵,利用as.matrix(dat)
即可。
barplot(dat)
Error in barplot.default(dat) : 'height'要么是向量,要么是矩阵
TBC...
网友评论