R语言 从文本文件阅读不一致的数据

vohkndzv  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(118)

今年我想用R语言写代码。
the day5 puzzle上,有一种奇怪的输入格式,我不得不将其导入到R:

[D]    
[N] [C]    
[Z] [M] [P]
 1   2   3

不幸的是,我找不到一个正确的方法来读取这个示例输入,所以我手动输入堆叠的板条箱(这就是这个谜题的内容),并使用以下命令将其发送到一个字符列表:

L <- sapply(list("ZN", "MCD", "P"), strsplit, "")
# [[1]]
# [1] "Z" "N"
# 
# [[2]]
# [1] "M" "C" "D"
# 
# [[3]]
# [1] "P"

虽然puzzele的my solution可以正常工作,但我仍然希望能够自动读入示例数据,而不是手动输入。有什么建议吗?我更喜欢data.table解决方案,但当然欢迎所有提示/技巧/解决方案。

6ss1mwsb

6ss1mwsb1#

如果您将输入保存在文本文件中,您可以使用readLines读取它,然后执行其余操作,例如:

L <- readLines('crates.txt')
# split into single characters and create a matrix
L <- sapply(strsplit(L, ''), identity)
# keep only rows with a number in the last column (and remove that column)
L <- L[grepl('[0-9]', L[, ncol(L)]), -ncol(L)]
# drop empty cells and reverse rows
L <- apply(L, 1, \(x) rev(x[x!=' ']), simplify=F)

L
# [[1]]
# [1] "Z" "N"
# 
# [[2]]
# [1] "M" "C" "D"
# 
# [[3]]
# [1] "P"

相关问题