【R读取报错】解决: Can't bind data because some arguments have the same name
最近读取一个数据时,报如标题的错误。
args[1] <- "RT_10-VS-RT_0"
all <- read.delim(paste0(args[1],".xls"),header = T,check.names = F)
dat <- all %>% dplyr::select(Protein_ID,starts_with("Ratio"),starts_with("Qvalue"),starts_with("KEGG"),Description,Protein_Sequence)
这是因为select函数对于有重复列名的数据框,选择不了。(即使不选择重复的列也会报此错误)。
可以用以下脚本查下重复的列名:
#检查重复列名
> tibble::enframe(names(all)) %>% count(value) %>% filter(n > 1)
# A tibble: 1 x 2
  value          n
  <chr>      <int>
1 Protein_ID     2
发现有两个Protein_ID的列。
如何解决呢?可改用readr读取,会智能解析。
all <- readr::read_delim(paste0(args[1],".xls"),delim = "\t") %>%
  dplyr::select(Protein_ID,starts_with("Ratio"),starts_with("Qvalue"),starts_with("KEGG"),Description,Protein_Sequence)
Parsed with column specification:
cols(
  .default = col_character(),
  No. = col_double(),
  Mass = col_double(),
  Protein_Coverage = col_double(),
  `Mean_Ratio_RT_10_118/RT_0_117` = col_double(),
  `Tremble Identity` = col_double(),
  `Tremble E-value` = col_double()
)
See spec(...) for full column specifications.
Warning: 29 parsing failures.
 row                           col expected actual                file
1001 Tremble Identity              a double    -   'RT_10-VS-RT_0.xls'
1001 Tremble E-value               a double    -   'RT_10-VS-RT_0.xls'
1410 Mean_Ratio_RT_10_118/RT_0_117 a double    n/a 'RT_10-VS-RT_0.xls'
1871 Tremble Identity              a double    -   'RT_10-VS-RT_0.xls'
1871 Tremble E-value               a double    -   'RT_10-VS-RT_0.xls'
.... ............................. ........ ...... ...................
See problems(...) for more details.
Warning message:
Duplicated column names deduplicated: 'Protein_ID' => 'Protein_ID_1' [14]
警告中也有提示解析(按默认解析方式col_double)失败的列和行,提示了重复列Protein_ID。怎么去掉长长的Parsed with column specification信息呢,我们可以指定读入时列名解析类型,或使用默认参数col_types = cols()。
all <- readr::read_delim(paste0(args[1],".xls"),delim = "\t",col_types = cols()) %>%
  dplyr::select(Protein_ID,starts_with("Ratio"),starts_with("Qvalue"),starts_with("KEGG"),Description,Protein_Sequence)  
Warning: 29 parsing failures.
 row                           col expected actual                file
1001 Tremble Identity              a double    -   'RT_10-VS-RT_0.xls'
1001 Tremble E-value               a double    -   'RT_10-VS-RT_0.xls'
1410 Mean_Ratio_RT_10_118/RT_0_117 a double    n/a 'RT_10-VS-RT_0.xls'
1871 Tremble Identity              a double    -   'RT_10-VS-RT_0.xls'
1871 Tremble E-value               a double    -   'RT_10-VS-RT_0.xls'
.... ............................. ........ ...... ...................
See problems(...) for more details.
Warning message:
Duplicated column names deduplicated: 'Protein_ID' => 'Protein_ID_1' [14]
警告信息还在,最好保留。
【R读取报错】解决: Can't bind data because some arguments have the same name的更多相关文章
- scala文件读取报错“java.nio.charset.MalformedInputException: Input length = 1”
		今天写spark程序的时候遇到了一个问题就是,读取文件的时候报了一个错:“Exception in thread "main" java.nio.charset.Malformed ... 
- Flex文件读取报错
		Flex文件读取 1.s:WindowedApplication <?xml version="1.0" encoding="utf-8"?> &l ... 
- XML内容作为String字符串读取报错
		解决方案: 1.把头信息<?xml version='1.0' encoding='UTF-8'?>,但是内容会丢失部分: 2.用XmlDocument解析就OK. 正确代码: ... 
- WINDOWS下,中文JSON格式读取报错处理:ValueError: No JSON object could be decoded
		File "C:\Python27\lib\json\__init__.py", line 290, in load **kw) File "C:\Python27\li ... 
- svnserve: Can’t bind server socket: Address already in use报错解决办法
		最近在学习自己搭建SVN服务,意外的报错 svnserve: Can’t bind server socket: Address already in use 于是google了下,原来是 已经启动了 ... 
- 转 :  Apache启动报错:could not bind to address [::]:443 解决办法
		转:Apache启动报错:could not bind to address [::]:443 解决办法 安装Apache服务器的时候,报如下错误: Installing the 'apache' s ... 
- R语言安装openxl包报错解决办法
		在R语言中使用openxlsx包,会报错 解决办法就是: 下载安装Set-Rtool,安装时注意勾选对话框 然后在R中运行以下代码: Sys.setenv("R_ZIPCMD" = ... 
- sphinx :undefined reference to `libiconv' 报错解决办法
		sphinx :undefined reference to `libiconv' 报错解决办法 2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ... 
- CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录
		最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ... 
随机推荐
- createContext 你用对了吗?
			目录 前言 性能问题的根源 问题1(整体重复渲染):Provider组件包裹的子组件全部渲染 问题2(局部重复渲染):使用useContext导致组件渲染 解决方案 解决问题1 解决问题2 参考 前言 ... 
- linux下创建文件的文件权限问题
			今天发现创建文件的权限和自己规定的权限不一致,了解到了权限掩码的问题,这里总结一下. 首先权限掩码umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常我们都 ... 
- palindrome-partitioning leetcode C++
			Given a string s, partition s such that every substring of the partition is a palindrome. Return all ... 
- When overwhelmed, take a break
			When overwhelmed by, frustrated with, or tired of the work, taking a break will help with thinking a ... 
- 从拥有一个阿里云账号开始使用Maxcompute
			本教程并不会创建子账户来管理maxcompute,是直接使用主账号来对maxcompute进行管理(强烈不推荐在生产环境中这样做!!) Step1:创建阿里云账号并实名认证  创建一个阿里云账号(使 ... 
- C++11 多线程同步 互斥锁 条件变量
			在多线程程序中,线程同步(多个线程访问一个资源保证顺序)是一个非常重要的问题,Linux下常见的线程同步的方法有下面几种: 互斥锁 条件变量 信号量 这篇博客只介绍互斥量和条件变量的使用. 互斥锁和条 ... 
- 【Python+postman接口自动化测试】(3)什么是接口测试?
			什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换.传递和控制管理过程,以及系统间的相互逻辑依 ... 
- vue脚手架项目如何在控制台打印组件实例
			需要在浏览器上安装拓展程序vue开发工具,安装好后在控制台上输入$vm即可打印vue组件实例对象. Vue2.3开发工具都有,可自行下载 百度网盘链接提取码:si5l 
- LeetCode 113. 路径总和 II C++
			提交结果:内存超100%,用时超69% /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo ... 
- kafka删除topic中的数据,适用于比较高的版本
			server.properties中增加选项 delete.topic.enable=true 修改之后重启kafka 进入kafka目录,输入命令 bin/kafka-topics.sh --zoo ... 
