我在尝试读取包含 561366 行和 15 列的 .txt 文件时遇到问题。第一行看起来像这样:
70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1
90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1
.
.
.
我用来读取文件的代码是:
Datos <- read.table("C:/Users/hernandezn/Desktop/DataSets/INACTIVOS.txt",
header=FALSE, sep="|", na.strings="N/A", dec=".", strip.white=TRUE)
如您所见,我的列由"||"
,但我不能在 R 命令中使用它read.table
as asep
选项。所以,我用过sep="|"
并且必须为此付出代价(现在我有 29 列)。
问题是我只从文件中的 561366 行中获取 241116 行。另一方面,我尝试通过替换来读取该文件"||"
符号由;
并将其保存为 .xlsx 文件,我以这种方式获取所有行。
你能建议我一种解决这个问题的方法吗?可能是内存问题吗?我有一个 32 位 R 版本,在具有 2GB 内存 RAM 的计算机上运行。
我认为sep=
字符长度必须为一。所以你可以简单地调用一个外部命令(比如sed
or perl
) 来替换两个字符||
,或者自己在 R 中完成。
这是一个概念验证单行代码,它首先切换||
to ,
(并作为|
是一个元字符,我们需要对其进行转义,并对转义字符进行转义\
too):
R> read.csv(textConnection(gsub("\\|\\|", ",", "70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1\n90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1")), header=FALSE)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 70000 Consumer A 23 DN 70000 10038782 1 SI 2 NO 0 N/A 0 N/A 1
2 90000 Consumer B 23 DN 90000 15402432 1 SI 2 NO 0 N/A 0 N/A 1
R>
或者两行可能更清晰:
R> txt <- "70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1\n90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1"
R> read.csv(textConnection(gsub("\\|\\|", ",", txt)), header=FALSE)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 70000 Consumer A 23 DN 70000 10038782 1 SI 2 NO 0 N/A 0 N/A 1
2 90000 Consumer B 23 DN 90000 15402432 1 SI 2 NO 0 N/A 0 N/A 1
R>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)