翻译:BioIT 爱好者(部分内容有调整)
原文:The top 10 R errors, the 7th one will surprise you

就像你学习走路时遇到了一些问题,你在学习 R 的过程中可能也会遇到一些错误。本文章的目标是对学习 R 时最常见的一些错误进行整理,并一一的去解释它们,以便您了解如何解决这些问题。


面对问题,最重要的建议是:“阅读错误信息”。有些错误信息通常不是很清楚,R 并不是真的很擅长表达它们,但是答案通常就在您的面前。一旦您敢于阅读错误信息,我们将帮助您阅读这些错误信息!

1. could not find function "%>%"

这是一个经典错误,可能发生在%>%或任何其他函数中。

有两种情况会导致出现这样的错误:

CASE 1 :
您拼写错了该函数的名称:

> rnom(1)  # instead rnorm(1)
Error: could not find function "rnom"

Correction :
该如何解决?通过纠正拼写错误。

> rnorm(1)
[1] -0.7503872

CASE 2 :
或者(在大多数情况下)您忘记了加载包含该函数的软件包。

> iris  %>% select(Species)
Error in iris %>% select(Species) : could not find function "%>%"

Correction :

不要忘记在你的脚本和 Rmd 开头安装并启动library(tidyverse)和其他的library(whatever)

library(dplyr)
iris  %>% select(Species)

2. Error: unexpected SPECIAL in "%>%"

错误代码:

library(dplyr)
iris  
%>% select(Species)
## Error: unexpected SPECIAL in %>%
## 2: iris  
## 3: %>%
##    ^

您将换行符放错了位置。

Correction :
%>%绝对不能在代码行的开头,您需要在%>%之后而不是之前进行换行。

library(dplyr)
iris  %>% 
  select(Species)

3. Error: unexpected 'else' in "else"

错误代码:

if (  1 != 1 ) {print("youpi")} 
else { print("coucou")}
## Error: unexpected 'else' in "else"
## 1: if (  1 != 1 ) {print("youpi")} 
## 2: else
##    ^

这与第二个错误的问题是一样的。您将换行符放错了位置。

Correction :
你需要检查else是否与前一行正确关联。

R 一次解释一行代码,所以当if没有关联的else代码时,要让你的代码起作用,请确保 R 知道您的指令已完成。

if (  1 != 1 ) {print("youpi")
  } else { print("coucou")}

4. object 'dataset' not found

错误代码:

library(dplyr)
dataset %>% select(Species)
## Error in eval(lhs, parent, parent) : object 'dataset' not found

您正在处理的对象不存在。

Correction :

拼写错误?或你需要确保你在这之前已经启动并分配了该对象。

5. there is no package called 'diplyr'

错误代码:

> library(diplyr)
Error in library(diplyr) : there is no package called ‘diplyr’

出现这样的错误有两种可能:

CASE 1 :
您拼错了库的名字。

Correction :

library(dplyr)

CASE 2 :
该软件包尚未安装。

Correction :
在终端中启动install.packages("dplyr")将解决此问题。

6. non-numeric argument to binary operator

错误代码:

> df + 1
## Error in df + 1 : non-numeric argument to binary operato

这样的报错可能会让人很困惑。

Correction :
确保您的算术运算有意义,并且应用在了正确的对象上。确保该对象包含您期望包含的对象。

在上面的示例中,df是一个函数,而不是数字,从而导致错误。

7. Problem with `filter()` input `..1`.

错误代码:

library(dplyr)
iris %>% filter(Species = "setosa")
## Error: Problem with `filter()` input `..1`.
## x Input `..1` is named.
## i This usually means that you've used `=` instead of `==`.
## i Did you mean `Species == "setosa"`?

在错误消息中包含解决方案。

Correction :
在错误消息中已经给出了如何校正的方法。您只输入了一个=,但条件必须用==编写。

library(dplyr)
iris %>% filter(Species == "setosa")

8. Error: unexpected symbol in:

错误代码:

library(dplyr)
iris %>% filter(Species == "setosa"
iris %>% filter(Species == "setosa")
## Error: <text>:3:1: unexpected symbol
## 2: iris %>% filter(Species == "setosa"
## 3: iris
##    ^

当您发送未完成的行,而您忘记了右括号,大括号或引号时,通常会出现此错误消息。在这种情况下,R 一直等到您的指令结束。但是,您不仅要发送丢失的括号(或括号/引号),而且要再次发送整个指令。Rmd 更加棘手,因为您没办法通过查看终端来检查确实已经发送给 R 的内容。

Correction :
已经修复了!现在,您已收到 R 发送的一条错误消息,重新启动您的指令,即可成功执行。

9. Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)

见下文。

10. Can't access reactive value 'go' outside of reactive consumer. Do you need to wrap inside reactive() or observer()?

错误代码:

library(shiny)
ui <- fluidPage(
  actionButton("go","go")
)
server <- function(input, output, session) {
  res <- input$go
}
shinyApp(ui, server)

您使用 Shiny 并尝试在observe()observEvent()reactive()render()之外使用input$。只是这有点不可能。别担心,在您犯错之前,确实也已经有人遇到过同类的错误!

Correction :
您可以在代码周围放置一个observe()

但是,求求您!不应在您的 shiny 应用程序中同时使用observe()reactive()(有时间的话我们将讨论这个问题..),因此,请尝试寻找更好的解决方案……:)

library(shiny)
ui <- fluidPage(
  actionButton("go","go")
)
server <- function(input, output, session) {
  r <- reactiveValues(x=NULL)
  observeEvent( TRUE ,once = TRUE, {
    r$x <- input$go
  })
}
shinyApp(ui, server)

最后

如果你还有其他烦人的经常性错误要分享,请在评论中写下它,一起分享交流!

R 语言 download.file 的几点知识

2021-03-02

R 包初学者指南

2021-02-05

R 语言中 X11 相关的一些问题

2020-09-27

R 语言关于 SSL 证书异常处理笔记

2020-06-18

ggplot2 调整绘图区域大小

2020-05-23

R 语言画图中英文字体解决方案

2020-02-29

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

R 语言中常见的 10 个错误,看到第 7 个会不会感觉很神奇?的更多相关文章

  1. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

  2. R语言中样本平衡的几种方法

    R语言中样本平衡的几种方法 在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性.在不平衡的数据中,任一算法都没法从样本量少的类中获取 ...

  3. 机器学习:R语言中如何使用最小二乘法

    详细内容见上一篇文章:http://www.cnblogs.com/lc1217/p/6514734.html 这里只是介绍下R语言中如何使用最小二乘法解决一次函数的线性回归问题. 代码如下:(数据同 ...

  4. R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...

  5. R语言中的数据处理包dplyr、tidyr笔记

    R语言中的数据处理包dplyr.tidyr笔记   dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...

  6. R语言学习笔记1——R语言中的基本对象

    R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...

  7. R语言中的机器学习包

    R语言中的机器学习包   Machine Learning & Statistical Learning (机器学习 & 统计学习)  网址:http://cran.r-project ...

  8. R语言中的字符处理

    R语言中的字符处理 (2011-07-10 22:29:48) 转载▼ 标签: r语言 字符处理 字符串 连接 分割 分类: R R的字符串处理能力还是很强大的,具体有base包的几个函数和strin ...

  9. R语言中的几种数据结构

    R语言中的几种数据结构 一  R中对象的5种基本类型 字符(character) 整数 (integer) 复数(complex) 逻辑(logical:True/False) 数值(numeric: ...

  10. 分类-回归树模型(CART)在R语言中的实现

    分类-回归树模型(CART)在R语言中的实现 CART模型 ,即Classification And Regression Trees.它和一般回归分析类似,是用来对变量进行解释和预测的工具,也是数据 ...

随机推荐

  1. GPSSworld仿真(一):程序题——单窗口排队系统

    3.3 一个仓库共存放了2000吨货物,货物以三种规模出库,少量(10吨),中等(20吨),大量(50吨),分别以10±5分,15分,30±10分的速率出库.如果没有货位达到的情况下,一个仓库能维持供 ...

  2. urllib.parse的使用

    urllib简介 urllib是pyhton自带的标准库用于网络请求库,无需安装,直接引用 通常用于爬虫开发,API(应用程序编程接口)数据获取和测试 urllib库的4大模块 urllib.requ ...

  3. OPP前三次作业总结

    OPP前三次作业总结 目录 前言: 第一次OOP训练: 7-7 有重复的数据 设计与分析: 具体代码 踩坑心得 改进建议 7-8 从一个字符串中移除包含在另一个字符串中的字符 设计与分析: 具体代码 ...

  4. Redis的自增也能实现滑动窗口限流?

    限流是大家开发之路上一定会遇到的需求.比如:限制一定时间内,接口请求请求频率:一定时间内用户发言.评论次数等等,类似于滑动窗口算法.这里分享一份拿来即用的代码,一起看看如何利用常见的 Redis 实现 ...

  5. it必给装机小软件附源码

    需要的包 启动之后是这个样子的 远吗如下: #authon fengimport zipfile as zfimport osimport win32apiimport win32conimport ...

  6. [Linux]ln:软链接与硬链接

    1 硬链接与软链接的[语法] 软链接:ln -s 源文件 目标文件 硬链接:ln 源文件 目标文件 [-s : symbolic,符号/代号] 2 软链接/硬链接的[比喻] / (编辑)同步性 [ro ...

  7. 四月二十五号java基础知识

    1.注意:无论哪个构造方法,在创建文件输入输出流时都可能银给出的文件名不对.路径不对文件的属性不对等,不能打开文件而造成错误,此时系统会抛出FileNotFoundException异常执行read( ...

  8. 活字格性能优化技巧(3):如何巧用CDN提升含页面的访问速度

    本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上两篇中我们分享了如何利用数据库主键和表格设置默认不加载数据来提升应用 ...

  9. 【Git GitHub Idea集成】

    1 Git介绍 分布式版本控制工具 VS 集中式版本控制工具 git是一个免费开源的分布式版本控制系统,可以快速高效地处理从小型到中型的各种项目. 1.1 Git进行版本控制 集中式版本控制工具:如C ...

  10. LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 前天刚举办 2023 年力扣杯个人 SOLO 赛,昨天周赛就出了一场 Easy - Ea ...