我正在阅读一个如下所示的数据集:
我的代码如下:
NatPark <- read.delim (paste0(dirdata,"NatPark_Plus.dat"),
header= TRUE,
sep = "\t",
quote = "\"",
dec = ".",
fill = TRUE,
as.is = c("ParkName", "State"))
然后我收到如下警告:
警告消息:1:在read.table中(file = file,header = header,sep = sep,quote = quote,:readTableHeader在'/ Volumes / Elements / STAT_611 / 611 / DATA / DATA11 / NatPark_Plus上找到的不完整的最后一行.dat'2:在read.table中(file = file,header = header,sep = sep,quote = quote,:并非'as.is'中所有列都存在
所以我将“header = TRUE”更改为“header = FALSE”,如下所示:
NatPark <- read.delim (paste0(dirdata,"NatPark_Plus.dat"),
header= FALSE,
sep = "\t",
quote = "\"",
dec = ".",
fill = TRUE,
as.is = c("ParkName", "State"))
我收到了同样的警告信息:
警告消息:1:在read.table中(file = file,header = header,sep = sep,quote = quote,:readTableHeader在'/ Volumes / Elements / STAT_611 / 611 / DATA / DATA11 / NatPark_Plus上找到的不完整的最后一行.dat'2:在read.table中(file = file,header = header,sep = sep,quote = quote,:并非'as.is'中所有列都存在
这一行的所有行号都显示在下面,如下所示 . 但是,我不明白str(NatPark)是什么意思 . 什么是“v1”?并且“4 1 5 2 3”紧随其后?谢谢你的任何建议!谢谢!
2 回答
我没有使用
.dat
文件,但如果您可以共享下载链接,我可以帮助进一步排除故障 . 到目前为止,我可以提供以下见解:V1
(和V2,V3,V4 ...)是指R没有 Headers 时自动分配的列名 . 由于只有V1,所以当然R认为你只有1列当前设置 .关于
"4 1 5 2 3"
,您从str
的输出中看到,该因子变量引用了数字级别(在这种情况下,整行被读作一个变量) . 默认情况下,R始终按字母顺序对级别进行排序 . 虹膜数据集中的这个示例应该有助于澄清:由reprex package(v0.2.0)创建于2018-08-18 .
您可以看到值
setosa
被认为是1
,因为它是第一级,setosa
是2,而virginica
是3.但是,这应该都是一个没有实际意义的点,因为您不希望将整行读作一个变量 .关于您的主要问题,我能够组合一个自定义函数来解析您的数据的数据 . 将来,如果有一个引用源数据中的文本的选项,事情可能会简单得多 . 无论如何,希望这对你有用!您只需设置列名称并将某些列从字符更改为数字 .
由reprex package(v0.2.0)创建于2018-08-18 .