阅读R中的表格和注释
我想将元数据作为注释添加到电子表格中,然后让R忽略这些注释 我的数据是这样的阅读R中的表格和注释,r,metadata,read.table,R,Metadata,Read.table,我想将元数据作为注释添加到电子表格中,然后让R忽略这些注释 我的数据是这样的 v1,v2,v3, 1,5,7, 4,2,1,#possible error, (例外是它长得多。第一条注释实际上出现在前5行之外,由scan用来确定列数) 我一直在努力: read.table("data.name",header=TRUE,sep=",",stringsAsFactors=FALSE,comment.char="#") 但是,read.table(就这点而言,count.fields)认为我比实
v1,v2,v3,
1,5,7,
4,2,1,#possible error,
(例外是它长得多。第一条注释实际上出现在前5行之外,由scan
用来确定列数)
我一直在努力:
read.table("data.name",header=TRUE,sep=",",stringsAsFactors=FALSE,comment.char="#")
但是,read.table
(就这点而言,count.fields
)认为我比实际拥有的字段多了一个字段。我的数据框以一个名为“X”的空白列结束。我认为这是因为我的电子表格程序在每一行的末尾都添加了逗号(如上面的示例所示)
使用flush=TRUE
没有效果,即使(根据帮助文件)它“[…]允许将注释放在最后一个字段[…]之后”
使用colClasses=c(rep(NA,3),NULL)
也没有效果
我可以在事后删除该列,但由于这似乎是一种常见做法,我想学习如何正确地执行
谢谢
安德鲁从文件(?读取。表格
):
colClasses字符。为列假定的类向量。根据需要循环使用,或者如果命名了字符向量,则未指定的值将被视为NA
可能的值有NA(使用type.convert时的默认值)、“NULL”(跳过列时)、原子向量类之一(逻辑、整数、数字、复数、字符、原始值)或“factor”、“Date”或“POSIXct”。否则,需要一个as方法(来自包方法)来将“character”转换为指定的形式类
注意,它说要使用“NULL”
,而不是NULL
。事实上,这是意料之中的:
con <- textConnection("
v1,v2,v3,
1,5,7,
4,2,1,#possible error,
")
read.table(con, header = TRUE, sep = ",",
stringsAsFactors = FALSE, comment.char = "#",
colClasses = c(rep(NA, 3), "NULL"))
# v1 v2 v3
# 1 1 5 7
# 2 4 2 1
con关于注释字符和数据列数的问题与read.table()无关,但与电子表格无关(我使用的是Excel)。read.table的默认行为是将#视为注释的开头,忽略后面的内容。出现错误的原因是数据行末尾有一个逗号。这告诉read.table应该有更多的数据。阅读您的原始示例:
> read.table(text="v1, v2, v3,
+ 1,5,7,
+ 4,2,1,#possible error,", sep=",", header=TRUE)
v1 v2 v3 X
1 1 5 7 NA
2 4 2 1 NA
默认情况下会忽略注释,并创建第四列并标记为X。您可以在事后轻松删除此列,或者使用@flodel提到的方法,或者在将文件读入R之前删除尾随逗号。在Excel中,将文件另存为csv(逗号分隔变量)时会添加尾随逗号因为注释出现在第四列中,Excel无法将其识别为注释。如果将文件另存为空格分隔符,问题就会消失(删除sep=参数,因为空格是默认分隔符):
> read.table(text="v1 v2 v3
+ 1 5 7
+ 4 2 1#possible error", header=TRUE)
v1 v2 v3
1 1 5 7
2 4 2 1