iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >解决R语言报错:Error in y + 1:non-numeric argument to binary operator
  • 437
分享到

解决R语言报错:Error in y + 1:non-numeric argument to binary operator

r语言报错说明r语言常见错误1Error in y + 1 2022-11-13 19:11:16 437人浏览 安东尼
摘要

目录报错信息:报错原因:原代码:报错原因解析:总结因为花了2天半才解决,中间痛苦的寻找,记录一下解决的流程与经验 报错信息: 1Error in y + 1 : non-numeri

因为花了2天半才解决,中间痛苦的寻找,记录一下解决的流程与经验

报错信息:

1Error in y + 1 : non-numeric argument to binary operator

报错原因:

数据不是可计算的 numeric 或 integer 类型

原代码:

图片描述

a = read.table(file = study.txt", sep = "\t",
  header = T, row.names = 1
  )
class(a[3, 3])    # integer
aa = t(d)
class(aa[3, 3])   # character
b = sparcc(aa)
# 出现报错
Error in y + 1 : non-numeric argument to binary operator

报错原因解析:

1. 转置后数据类型变为character,因为numeric数据中存在character类型的脏数据

(原因:转置函数t() 是先将dataframe转换为矩阵matrix,而matrix只有一种数据类型。所以如果存在character,所有数据都会被转换成character)

如何发现是否有character脏数据:

read.table设置参数colClasses = “numeric”(确保数据框内只有numeric类型)

a = read.table(file = study.txt", sep = "\t",
  header = T, row.names = 1
  colClasses = "numeric"   # 添加的参数
  )
  
  # 出现报错
  Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  scan() expected 'a real', Got 'f__Cenarchaeaceae'

报错意为 数据框内存在“f__Cenarchaeaceae”,不属于numeric

查看txt内部

2. 引入character脏数据的原因

# 后续分析需要:设置data第一列列名为空格
genus <- data[1]
colnames(genus) <- " "
# 根据列名提取子集
 a <- subset(data, select = (disID[, 1]))

subset()函数将列名为 空格blank 的也提取了,导致了character脏数据的进入

总结

到此这篇关于解决R语言报错:Error in y + 1:non-numeric argument to binary operator的文章就介绍到这了,更多相关R语言报错1Error in y + 1 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 解决R语言报错:Error in y + 1:non-numeric argument to binary operator

本文链接: https://www.lsjlt.com/news/170741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作