我需要将一个表导入到由空格分隔的R中.不幸的是,在某些字段中,存在导致R分成新行的空格.有没有办法让这些领域"粘在一起"?
例如,表格如下所示:
V1 V2 V3 V4
Text More 0.11 (a)kdfs hdfa ag$
Text More 1.12 a
Text More 0.21 v
Text More 1222 (a)sdfs sdfa->g
Text More 1232 (a)sdfs sdfa->g
Run Code Online (Sandbox Code Playgroud)
但是在R读取它时会变成这个(使用read.delim)
V1 V2 V3 V4
Text More 0.11 (a)kdfs
hdfa ag$
Text More 1.12 a
Text More 0.21 v
Text More 1222 (a)sdfs
sdfa->g
Text More 1232 (a)sdfs
sdfa->g
Run Code Online (Sandbox Code Playgroud)
这些字段都有奇怪的字符,这些字符并非与其他列/行共享.但是,如图所示,空格的两侧没有相同的字符.
在原始文件中,行正确分隔.有办法做以下任何一种吗?
sep如果这是非常天真的话,对R很新.这是我的脚本到目前为止的样子:
strs <- readLines("file")
dat <- read.delim(text = strs,
skip = 17,
col.names = c("V1", "V2", "V3", "V4"),
sep = " ", header = F)
Run Code Online (Sandbox Code Playgroud)
有什么我可以添加到其中任何一个read.delim或readLines之间来解决这个问题吗?因为有需要被切除的绒毛(因此skip)我不能使用read.table(如果我错了,请纠正我).
空间周围的一些字符是共享的,所以我愿意使用一种更繁琐的方法将其他字符放在例如's'和's'之间的空格中.gsub如果没有更简单的方法,这是可能的吗?
非常感谢!
编辑:洞察力的闪光,是否有可能使第四列成为一个新表(当然不是用空格分隔),然后用其他东西替换该表中的所有空格?如何在第三列之后"断开"第四列/列?
1)试试这个:
for(i in 1:3) strs <- sub(" +", ",", strs)
read.csv(text = strs)
Run Code Online (Sandbox Code Playgroud)
最后一行的结果是:
V1 V2 V3 V4
1 Text More 0.11 (a)kdfs hdfa ag$
2 Text More 1.12 a
3 Text More 0.21 v
4 Text More 1222.00 (a)sdfs sdfa->g
5 Text More 1232.00 (a)sdfs sdfa->g
Run Code Online (Sandbox Code Playgroud)
2)这是第二种解决方案:
strs.comma <- sub("^(\\S+) +(\\S+) +(\\S+) +", "\\1,\\2,\\3,", strs)
read.csv(text = strs.comma)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |