前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问题之书-Rtudio中基础R问题汇总

问题之书-Rtudio中基础R问题汇总

作者头像
Listenlii-生物信息知识分享
发布2021-04-20 18:10:33
6060
发布2021-04-20 18:10:33
举报

问题之书

一、序

二、三、如何认识、组织和提出自己的问题

四、Rtudio中基础R问题汇总

已经太久没有遇到很基础性的问题,因此很多刚开始学代码时候的问题已经忘了。因此写这部分并没有那么容易,要拼命回忆可能的常见问题。

对于代码问题,你一定要相信的是:

一定是自己的问题!代码一定没问题!

一定是自己的问题!代码一定没问题!

一定是自己的问题!代码一定没问题!

4.1 先解决一半问题

千万不要害怕!一半问题都是自己吓自己造成的。

只要你不怕,恭喜你,问题就已经解决了一半啦!

4.2 找到出现问题的地方

经常有人问我问题的时候,截一张报错的图片给我,一片红,根本不知道从哪开始报错的。

这样是没有用的,别人根本不会知道是哪里报了错,也没办法帮你解决!

你要先逐行往上查找,找到是从哪一行开始出现报错信息;或者输出文件是空的;或者出现了NA;或者全是0。

再从出现问题的这一行查找可能的原因。

4.3 代码红了怎么办?

  1. 首先确认出现的是Warming还是Error。 如果是Warning,恭喜,问题解决啦!Warning是一些警告信息,一般不会影响输出,可继续往下跑。可使用: options (warn = -1) 屏蔽警告信息。
  2. 如果是Error,最简单的办法就是复制这条Error信息到浏览器搜索。我相信90%以上都会有答案。多用几个浏览器试试,不同浏览器结果可能不一样。中文浏览器搜不到就试试Bing或Google。英文报错信息搜不到就翻译一下搜中文。

4.4 查询帮助文档&网上搜索

  1. 看这个函数的帮助文档,这是我最常回复别人的话。

问这个函数怎么用、这个函数怎么结果报错了、这个函数其中几个参数是什么意思,请自行查看函数帮助文档。要么是你输入文件格式不对,要么是文件内容不对,要么是你函数的使用格式不对。

因此就可以从两个方向进行检查:

看文件格式和内容;

看函数使用方法。

对于函数使用,比如我们要看vegan包diversity这个函数的用法,方法如下:

代码语言:javascript
复制
#1.vegan包的函数都可以用?vegan找到。注意所有问号必须是英文的问号。
?vegan
# 右下角的Help会出来vegan里面所有的函数信息,找到你需要的即可。

#2. 直接?diversity
?diversity
help(diversity) #这样也可以

4.5 显示中文

如果你的代码里有中文,但是没有正确显示。可以依次点左上角File-Reopen with Encoding:

选择UTF-8试试。如果还不行,就选GB开头的,一定能显示中文。

4.6 输入输出

  1. 输入文件格式不对是十分常见的问题。检查文件格式,建议用notepad++这个软件打开,看看有没有多余的字符。如果数据是Excel弄好,有时候可能会多出来几行或者几列空的东西。这个在Excel里面是看不出来的。
  2. R中读入文件的时候,read.table()或read.csv()最常用。注意里面的参数设置,数据的第一列做不做为行名(row.names=1);数据第一行是不是表头(header=T),还是直接就是数据(header=F);文件的分隔符是什么,是Tab还是其他字符(sep=“\t”)。 尤其是对于分组文件,变化可能较多。有的需要读表头或行名,有的不需要。很大程度上看写代码人的习惯。 有问题一定要?read.table看文档!
代码语言:javascript
复制
#常见的OTU表读入:Tab分割,有行名(OTU编号),有表头(样本名)
OTU = read.table("otu.txt", sep="\t", row.names=1,header=T )
  1. 文件的输出一般有两种基本形式:
  • 如果是数据框,可以用write.table(),write.csv()之类的。参数和读入数据基本一致。注意默认输出是有引号的,可用quote = FALSE去掉引号。另外还有一个新手会遇到的问题,输出的文件第一行和下面的内容会错一行。可使用col.names=NA,左上角会空一格,这样数据就对齐了。
代码语言:javascript
复制
#一个例子
write.table(result,file="result.txt",quote=F,sep="\t",col.names = NA)
  • 如果不是数据框格式的,用sink()函数输出。sink固定模式如下:
代码语言:javascript
复制
sink("out.txt")  #第一行为自己命名输出文件的名字
file1 # 每一行跟一个要输出的文件,几个无所谓。最后全都会写到out.txt
file2
file3
sink() #这一行必须是这样,不改。
  1. 路径中有中文

虽然Rstudio可以识别中文,大部分时候没有问题,但是还是在一些情况下可能报错,比如开发R包的时候。如果确认是字符的问题,可以试试全英文路径。

我暂时想到这么多,欢迎读者在评论区留言你遇到的觉得比较基础且重要的问题。

慢慢补充进来~

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-02,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Listenlii 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题之书
  • 一、序
  • 四、Rtudio中基础R问题汇总
    • 4.1 先解决一半问题
      • 4.2 找到出现问题的地方
        • 4.3 代码红了怎么办?
          • 4.4 查询帮助文档&网上搜索
            • 4.5 显示中文
              • 4.6 输入输出
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com