在Windows上用R中的SUB(1a)(Control-Z)字符读取文本文件
发布时间:2020-12-13 22:48:29 所属栏目:Windows 来源:网络整理
导读:继上周 reading badly formed csv in R – mismatched quotes的查询之后,这些相同的CSV文件也有嵌入的控制字符,例如ASCII Substitute Character,即十进制26或0x1A.不幸的是readLines()似乎截断了这个字符的行,所以我很难匹配引号 – 除了丢失这些行中的后面
继上周
reading badly formed csv in R – mismatched quotes的查询之后,这些相同的CSV文件也有嵌入的控制字符,例如ASCII
Substitute Character,即十进制26或0x1A.不幸的是readLines()似乎截断了这个字符的行,所以我很难匹配引号 – 除了丢失这些行中的后面的字段!
我试过readBin()但是我无法读取这个文件.我担心我不能干净地把它读成R给你一个例子,我很难在R中创建这些.抱歉不能用一个干净的例子来证明.思考? 更新 现在我很困惑 – 当我使用代码时 h3 <- paste('1,34,44.4,"',rawToChar(as.raw(c(as.integer(k1),26,65))),'",99') identical(readLines(textConnection(h3)),h3) 我得到TRUE,我觉得很惊讶! 更新2 h3 [1] "1," HIJK 32A ",99" > writeLines(h3,'h3.txt') > h3a <- readLines('h3.txt') Warning message: In readLines("h3.txt") : incomplete final line found on 'h3.txt' > h3a [1] "1," HIJK" 所以当来自textConnection()时,readLines()的反应会有所不同,并且它会在SUB字符处静默截断. 如果它有所作为我会感到惊讶,但我在Windows-64上的2.15.2. 更新3 在解决这个问题上有些模糊的成功…… zb <- file('h3.txt',"rb") tmp <- readBin(zb,raw(),size=1,n=400) # raw is always of size =1 nchar(tmp) # [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 close(zb) tmp # [1] 31 2c 33 34 2c 34 34 2e 34 2c 22 20 48 49 4a 4b 1a 41 20 22 2c 39 39 0d 0a rawToChar(tmp) # [1] "1,99rn" 即如果我在文件中读取二进制文件并转换为字符()后,它似乎工作…这对于大型CSV文件来说将是乏味的… R中是否有错误将Control-Z错误地检测为Windows上的文件结尾?
我想我已经找到了解决方案 – 因为在Windows上的文件中间读取Control-Z似乎存在问题,我们需要以二进制/原始模式读取文件.
fnam <- 'h3.txt' tmp.bin <- readBin(fnam,n=max(2*file.info(dfnam)$size,100))=1 tmp.char <- rawToChar(tmp.bin) txt <- unlist(strsplit(tmp.char,'rn',fixed=TRUE)) txt [1] "1,99" 更新 sReadLines <- function(fnam) { f <- file(fnam,"rb") res <- readLines(f) close(f) res } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 用于删除超过X天的文件的批处理脚本(基于创建日
- 批处理文件 – 如何在批处理文件中拆分不带循环的字符串
- Test-Cluster Powershell cmdlet List vs Validate
- active-directory – 计算机名称是否保证在域中是唯一的?
- 如何将程序输出管道输出到屏幕和Windows下的文件
- Windows版本标识[C/C++]
- 使用AD证书从Windows到Linux的SSH
- windows-server-2003 – 我在Windows Server 2003上拥有管理
- Windows PID = 0有效?
- WPF:找不到Microsoft_Windows_Themes