问题之书
二、三、如何认识、组织和提出自己的问题
四、Rtudio中基础R问题汇总
已经太久没有遇到很基础性的问题,因此很多刚开始学代码时候的问题已经忘了。因此写这部分并没有那么容易,要拼命回忆可能的常见问题。
对于代码问题,你一定要相信的是:
一定是自己的问题!代码一定没问题!
一定是自己的问题!代码一定没问题!
一定是自己的问题!代码一定没问题!
4.1 先解决一半问题
千万不要害怕!一半问题都是自己吓自己造成的。
只要你不怕,恭喜你,问题就已经解决了一半啦!
4.2 找到出现问题的地方
经常有人问我问题的时候,截一张报错的图片给我,一片红,根本不知道从哪开始报错的。
这样是没有用的,别人根本不会知道是哪里报了错,也没办法帮你解决!
你要先逐行往上查找,找到是从哪一行开始出现报错信息;或者输出文件是空的;或者出现了NA;或者全是0。
再从出现问题的这一行查找可能的原因。
4.3 代码红了怎么办?
- 首先确认出现的是Warming还是Error。
如果是Warning,恭喜,问题解决啦!Warning是一些警告信息,一般不会影响输出,可继续往下跑。可使用:
options (warn = -1)
屏蔽警告信息。
- 如果是Error,最简单的办法就是复制这条Error信息到浏览器搜索。我相信90%以上都会有答案。多用几个浏览器试试,不同浏览器结果可能不一样。中文浏览器搜不到就试试Bing或Google。英文报错信息搜不到就翻译一下搜中文。
4.4 查询帮助文档&网上搜索
- 看这个函数的帮助文档,这是我最常回复别人的话。
问这个函数怎么用、这个函数怎么结果报错了、这个函数其中几个参数是什么意思,请自行查看函数帮助文档。要么是你输入文件格式不对,要么是文件内容不对,要么是你函数的使用格式不对。
因此就可以从两个方向进行检查:
看文件格式和内容;
看函数使用方法。
对于函数使用,比如我们要看vegan包diversity这个函数的用法,方法如下:
4.5 显示中文
如果你的代码里有中文,但是没有正确显示。可以依次点左上角File-Reopen with Encoding:
选择UTF-8试试。如果还不行,就选GB开头的,一定能显示中文。
4.6 输入输出
- 输入文件格式不对是十分常见的问题。检查文件格式,建议用notepad++这个软件打开,看看有没有多余的字符。如果数据是Excel弄好,有时候可能会多出来几行或者几列空的东西。这个在Excel里面是看不出来的。
- R中读入文件的时候,read.table()或read.csv()最常用。注意里面的参数设置,数据的第一列做不做为行名(row.names=1);数据第一行是不是表头(header=T),还是直接就是数据(header=F);文件的分隔符是什么,是Tab还是其他字符(sep=“\t”)。
尤其是对于分组文件,变化可能较多。有的需要读表头或行名,有的不需要。很大程度上看写代码人的习惯。
有问题一定要?read.table看文档!
- 文件的输出一般有两种基本形式:
- 如果是数据框,可以用write.table(),write.csv()之类的。参数和读入数据基本一致。注意默认输出是有引号的,可用quote = FALSE去掉引号。另外还有一个新手会遇到的问题,输出的文件第一行和下面的内容会错一行。可使用col.names=NA,左上角会空一格,这样数据就对齐了。
- 如果不是数据框格式的,用sink()函数输出。sink固定模式如下:
- 路径中有中文
虽然Rstudio可以识别中文,大部分时候没有问题,但是还是在一些情况下可能报错,比如开发R包的时候。如果确认是字符的问题,可以试试全英文路径。
我暂时想到这么多,欢迎读者在评论区留言你遇到的觉得比较基础且重要的问题。
慢慢补充进来~