最近读取一个数据时,报如标题的错误。

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]

警告信息还在,最好保留。

Ref:https://github.com/tidyverse/readr/issues/954

【R读取报错】解决: Can't bind data because some arguments have the same name的更多相关文章

  1. scala文件读取报错“java.nio.charset.MalformedInputException: Input length = 1”

    今天写spark程序的时候遇到了一个问题就是,读取文件的时候报了一个错:“Exception in thread "main" java.nio.charset.Malformed ...

  2. Flex文件读取报错

    Flex文件读取 1.s:WindowedApplication <?xml version="1.0" encoding="utf-8"?> &l ...

  3. XML内容作为String字符串读取报错

    解决方案:    1.把头信息<?xml version='1.0' encoding='UTF-8'?>,但是内容会丢失部分: 2.用XmlDocument解析就OK.   正确代码: ...

  4. 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 ...

  5. svnserve: Can’t bind server socket: Address already in use报错解决办法

    最近在学习自己搭建SVN服务,意外的报错 svnserve: Can’t bind server socket: Address already in use 于是google了下,原来是 已经启动了 ...

  6. 转 : Apache启动报错:could not bind to address [::]:443 解决办法

    转:Apache启动报错:could not bind to address [::]:443 解决办法 安装Apache服务器的时候,报如下错误: Installing the 'apache' s ...

  7. R语言安装openxl包报错解决办法

    在R语言中使用openxlsx包,会报错 解决办法就是: 下载安装Set-Rtool,安装时注意勾选对话框 然后在R中运行以下代码: Sys.setenv("R_ZIPCMD" = ...

  8. sphinx :undefined reference to `libiconv' 报错解决办法

    sphinx :undefined reference to `libiconv' 报错解决办法   2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ...

  9. CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录

    最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ...

随机推荐

  1. Java:volatile笔记

    Java:volatile笔记 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. volatile 和 JMM 内存模型的可见性 JUC 下的三个包 java ...

  2. 第32篇-解析interfacevirtual字节码指令

    在前面介绍invokevirtual指令时,如果判断出ConstantPoolCacheEntry中的_indices字段的_f2属性的值为空,则认为调用的目标方法没有连接,也就是没有向Constan ...

  3. Vue:Vue的介绍以及组件剖析

    介绍 现在,随着基于JavaScript的单页应用程序(SPA)和服务器端渲染(SSR)的兴起,可以用JavaScript编写整个前端应用程序,并整洁地管理和维护该应用程序的前端代码.诸如Angula ...

  4. Py高级函数和方法

    Map() Redece() Dir() __len__   ---->>>  len() getattr().setattr() 以及   hasattr() 参考廖雪峰----- ...

  5. Ubuntu 16.04 curl 安装 使用

    curl是利用URL语法在命令行方式显工作的开元文件传输工具. 安装 $ sudo apt install -y curl 使用 $ curl http://www.baidu.com 这是最简单的使 ...

  6. cf20B Equation(认真仔细题)

    题意: 求AX^2+BX+C=0的根 思路: 考虑到A,B,C所有可能的情况 代码: double a,b,c; int main(){ cin>>a>>b>>c; ...

  7. js 基本用法和语法

    js 基础用法 点击事件     <!-- 第一种点击事件方式 -->   <!-- <div class="div" onclick="aler ...

  8. Web实时通信,SignalR真香,不用愁了

    前言 对于B/S模式的项目,基础的场景都是客户端发起请求,服务端返回响应结果就结束了一次连接:但在很多实际应用场景中,这种简单的请求和响应模式就显得很吃力,比如消息通知.监控看板信息自动刷新等实时通信 ...

  9. k8s入坑之路(15)kubernetes共享存储与StatefulSet有状态

    共享存储 docker默认是无状态,当有状态服务时需要用到共享存储 为什么需要共享存储: 1.最常见有状态服务,本地存储有些程序会把文件保存在服务器目录中,如果容器重新启停则会丢失. 2.如果使用vo ...

  10. 【java + selenium3】窗口基本操作及8大定位元素方法总结(一)

    一.窗口基本操作 1. 关于窗口的设置都是由window对象提供的: 获取window的对象方法: driver.manage().window(); //1.获取 window 对象 Window ...