zoukankan      html  css  js  c++  java
  • [R] read.table的check.names参数防止读入数据时列名前自动加上"X."

    最近用之前写的R脚本重新跑数据时,出现了报错。经检查,才发现是数据的列名读入R时发生了变化,列名前自动加上了X.符号。

    read.table系列函数有一个check.names参数,默认为 TRUE ,因此读入数据时它会自动检查变量名在R中是否有效。如果变量名包含首字母为数字、#$等情况时,则会自动加上X.,使变量看上去更像一个字符型变量。

    check.names是通过调用make.names函数来实现增加字符这一过程的,如列名为1,2, 3, 4, 5,6时,会自动加上X

    make.names(c("1", "2", "3", "4", "5", "6"))
    [1] "X1" "X2" "X3" "X4" "X5" "X6"
    

    但这往往不是我们希望的,因为变量名已经改变了, 就只能通过转换后的变量来访问对应数据。为了让列名称和原始的一致,在read.table时,可以设置check.names=F

    补充

    read.table参数解读

    read.table(file, header = FALSE, sep = "", quote = ""'",
               dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
               row.names, col.names, as.is = !stringsAsFactors,
               na.strings = "NA", colClasses = NA, nrows = -1,
               skip = 0, check.names = TRUE, fill = !blank.lines.skip,
               strip.white = FALSE, blank.lines.skip = TRUE,
               comment.char = "#",
               allowEscapes = FALSE, flush = FALSE,
               stringsAsFactors = default.stringsAsFactors(),
               fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
    
    • file 指定读入的文件

    • header 是否有列名(默认无)

    • seq 指定分隔符(空格、TAB、换行符、回车符)

    • quote 制定包围字符型数据的字符。默认情况下,字符串可以被 " 或 ’ 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。默认值改为 quote = ""

    • dec = "." 指定小数点数

    • colClasses 指定列的数据类型格式

    • row.names 指定各行名称,也可以是数字,指定某列为行名

    • col.names 指定各列名称

    • as.is = !stringsAsFactors as.is 字符向量是否转换成因子(仅仅这个功能),TRUE时保留为字符型

    • na.strings = "NA" 指定什么样的字符表示值缺少

    • colClasses = NA colClasses运行为输入中的每个列设置需要的类型。注意,colClassesas.is 对每 列专用,而不是每个变量。因此,它对行标签列也同样适用(如果有的话)。

    • nrows = -1 最大读入行数,即读入前多少行,“-1”表示都读入
      skip = 0 跳过文件的前n行(skip = n

    • check.names = TRUE # 检查变量名在R中是否有效

    • fill = !blank.lines.skip 从一个电子表格中导出的文件通常会把拖尾的空字段(包括?�堑姆指舴�? 忽略掉。为了读取这样的文件,必须设置参数 fill = TRUE

    • strip.white = FALSE 如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数 strip.white = TRUE

    • blank.lines.skip = TRUE 默认情况下,read.table 忽略空白行。这可以通过设置 blank.lines.skip = FALSE 来改变。但这个参数只有在和 fill = TRUE 共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。

    • comment.char = "#" 默认情况下,read.table# 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。如果确认数据文件中没有注释内容,用 comment.char = ""会比较安全 (也可能让速度比较快)。

    • allowEscapes = FALSE read.tablescan 都有一个逻辑参数 allowEscapes。从 R 2.2.0 开始,该参数默认为否,而且反斜杠是唯一被解释为逃逸引用符的字符。如果该参数设为是,以C形式的逃逸规则解释,也就是控制符如八进制和十六进制如 40x2A 一样描述。

    Ref:
    https://www.cnblogs.com/steamed-bread/p/5560641.html
    https://www.cnblogs.com/xudongliang/p/5141459.html

  • 相关阅读:
    访问HTML可以,访问PHPfile not found
    查看php-fpm的进程和端口号
    nginx调用PHP有sock方式和端口方式
    Linux创建用户、设置密码、修改用户、删除用户命令
    CentOS7 添加FTP用户并设置权限
    PHP使用文件锁解决高并发问题示例
    Huge CSV and XML Files in Python, Error: field larger than field limit (131072)
    怎样查询房产证是否抵押
    Python中模拟enum枚举类型的5种方法分享
    git for windows+TortoiseGit客户端的使用
  • 原文地址:https://www.cnblogs.com/jessepeng/p/11756251.html
Copyright © 2011-2022 走看看