【发布时间】:2018-11-08 12:05:15
【问题描述】:
我正在尝试通读 n 个 .txt 文件的列表并将内容保存到字符列表中。但是,当我阅读它们并将它们添加到列表“txts”中时,它给了我错误: "阅读 32 项 要替换的项目数不是替换长度的倍数"
每个 txt 文件包含 32 行,每行 32 个字符(“0”和“1”)。第一步,我想获得一个包含 txt 文件内容的 n 个元素列表(每个元素有 32 个项目,每个项目 32 个字符)。
然后我需要将每个 32x32 字符转换为 1x1024 向量(我将使用 strstrip),最后我需要有一个 n(txt 数)行和 1024 列的矩阵(每个 txt 文件的字符数)。
通过以下内容,我尝试创建两个 txt 文件内容的列表,但出现错误。我使用扫描是因为我需要 txt 文件中的所有字符。我尝试了 read.table ,它工作正常,但它会将它们转换为数字,我不希望这样。
file_example <-list("digits/trainingDigits/0_0.txt","digits/trainingDigits/0_1.txt")
txts <- c()
for (i in file_example){
nb = scan(s,what="character", sep=NULL)
txts[s] <- c(nb)
}
关于如何解决它的任何想法?我希望它足够清楚。
谢谢!!
更新:
我尝试了以下代码:
file_example <- c("digits/trainingDigits/0_0.txt","digits/trainingDigits/0_1.txt")
txts <- c()
mylist <- list()
for (i in 1: length(file_example)){
nb = read.csv(file_example[[i]])
txts[s] <- c(nb)
txts <- as.character(nb$X)
mylist[[i]] <- txts
}
但是,我得到的是一个包含两个元素的列表,并且在 32 个数字内,但我认为这些字符没有保留。
两个列表的第一个元素:
[[1]]
[1] “1.111111e+19” “1.111111111e+21” “1.1111111111111e+24” “1.1111110111111e+24” “1.11111100000111e+25”
[6] "1.11111100000001e+25" "1.11111100000001e+25" "1.111111e+25" "1.111111e+25" "1.11111e+25"
[11] "1.11111e+25" "1.11111e+25" "1.11111e+24" "1.11111e+24" "1.11111e+24"
[16] “1.11111e+24” “1.111111e+25” “1.111011e+25” “1.111e+25” “1.111e+24”
[21] “1.11100000000001e+24” “1.11100000000011e+24” “1.11100000000111e+24” “1.11000000111111e+23” “1.1110001111111e+23”
[26] “1.1111111111111e+23” “1.111111111111e+22” “1.11111111111e+22” “1.11111111e+21” “1.1111e+20”
[31]“1.1e+19”
最终目标是为每个 .txt 文件获取此信息,以便将其转换为具有 1024 个元素的向量:
"[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 [64] 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 [127] 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 [190] 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 [253] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 [316] 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 [379] 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0"
这将有 1024 个字符
谢谢
【问题讨论】:
-
我们可以在read.table中设置
colClasses=来避免将输入转换为数字。 -
请提供示例文本文件。
-
你能试试
txts <- lapply(file_example, scan, what="character", sep=NULL)之类的吗?