翻译: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. SpringBoot 项目使用 Sa-Token 完成登录认证

    一.设计思路 对于一些登录之后才能访问的接口(例如:查询我的账号资料),我们通常的做法是增加一层接口校验: 如果校验通过,则:正常返回数据. 如果校验未通过,则:抛出异常,告知其需要先进行登录. 那么 ...

  2. freeswitch媒体协商的优先级方案

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 不同的媒体格式各有优缺点,实际环境中的应用要根据线路和客户的实际需求确定. 本文中介绍一种较为通用的媒体配置方案,可以适配大部分场景 ...

  3. 对偶问题影子价格求解—R实现

    table { margin: auto } 线性规划的对偶问题 线性规划对偶问题概述 例1:某厂生产A,B, C三种产品,每种产品的单位利润分别为12,18和15,资源消耗如下表,求总利润最大的生产 ...

  4. flask-sqlalchemy入门

    Flask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展.它致力于简化在 Flask 中 SQLAlchemy 的使用.SQLAlchemy 是目前pytho ...

  5. [Linux]异常配置专题之重复配置的有效性:系统/环境变量 | hosts

    1 文由 在项目中经常遇到这种情况,1个hosts文件里同一IP 或 域名存在多个映射配置,那么到底哪个有效?环境变量亦有此问题. 问题本身不难,只是为了避免混淆,进行专门记录,以加深记忆. 2 ho ...

  6. 基础算法(排序 & 查找)

    快速排序.归并排序.整数二分查找.浮点数二分查找 快速排序 主要思想是分治: 确定分界点 调整范围 递归处理左右两段 代码: #include <iostream> using names ...

  7. CF1738EBalance Addicts

    CF1738EBalance Addicts 原题: CF1738EBalance Addicts 目录 CF1738EBalance Addicts 题目大意 做法 思路 注意 code 题目大意 ...

  8. 利用Velero对K8S备份还原与集群迁移实战

    一.简介 Velero 是一款云原生时代的灾难恢复和迁移工具,采用 Go 语言编写,并在 github 上进行了开源,利用 velero 用户可以安全的备份.恢复和迁移 Kubernetes 集群资源 ...

  9. Python argparse参数管理学习笔记1

    1.前言 最近尝试学习使用argparse进行参数管理,顺便改善一下我那丝毫都不专业的.简单粗暴的代码习惯. argparse模块可以让人轻松地编写用户友好地命令行接口,并且还能够自动生成帮助与使用手 ...

  10. 自学C#,要懂得善用MSDN

    很多初学者学习编程,都会通过看别人写的教程.或者录制的视频,来学习. 这是一个非常好的途径,因为这个是非常高效的. 但是这样,存在两个问题: 1.教程不够全面:任何再好的教程,都无法囊括所有的知识点, ...