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

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. MySQL:基础语法-4

    MySQL:基础语法-4 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...

  2. DDD领域驱动设计-概述-Ⅰ

     如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.)         ...

  3. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  4. Noip模拟11 2021.7.11

    T1 math 其实看看题面,看看给的那机组数据即可看出规律了(然而当时并没有,只是发现模数的循环节,存了个vector,接下来就暴力了) 有个柿子: 其实就是裴蜀定理. 然后想一想的话就是 那么只要 ...

  5. TVS管相关知识

    在设计中,使用到了TVS管,在之前的设计中没有特别关注TVS管.今天查了一些资料,算是简单的有个了解. TVS管是一种保护器件.它的英文全称为 transient voltage suppressor ...

  6. C语言基础知识总结大全

    1.入门程序 #include <stdio.h> int main() { printf("Hello World!"); return 0; } 2.数据类型 数据 ...

  7. python 修饰器(decorator)

    转载:Python之修饰器 - 知乎 (zhihu.com) 什么是修饰器,为什么叫修饰器 修饰器英文是Decorator, 我们假设这样一种场景:古老的代码中有几个很是复杂的函数F1.F2.F3.. ...

  8. Python ValueError: Attempted relative import in non-package Relative import相对引用 错误

    包含相对路径import的python脚本不能直接运行,只能作为module被引用. 例如 from . import mod1 有这样代码的文件只能最为moulule为不能直接运行.相对路径就是相对 ...

  9. 51nod_1003 阶乘后面0的数量(求N!中5的个数,数论)

    题意: n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数 ...

  10. sqlldr导入报错:field in data file exceeds maximum length

    检查报错日志提示:field in data file exceeds maximum length REMARK字段设置:varchar2(2000),报错的内容也没有超1000个字符 表中定义的字 ...