我正在尝试通读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 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 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 1 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 1 1 1 1 1 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 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 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 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 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 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 1 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 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 0”
这将有1024个字符
谢谢
答案 0 :(得分:0)
据我了解,您的问题是将每个文档存储为列表,并将数字值用作字符。事实上,您可以使用as.charachter()
将它们转换回字符
在这里,我提供一个简单的示例。如果您的数据有更多列,只需将向量txts
更改为矩阵,然后放置一个额外的for循环来存储它以索引每一行。
######### Creating the files
a<- c("0", "2","1","1")
b<- c("0","1","1","0")
#### path to read from and store the example
path<-"C:/Users/Carles/Desktop/"
write.csv(a,paste0(path,"a.txt"))
write.csv(b,paste0(path,"b.txt"))
# reading example
file_example<- c(paste0(path,"a.txt"), paste0(path,"b.txt"))
# creating a list to store values
mylist<-list()
for (i in 1:length(file_example)){
nb = read.csv(file_example[i]) # reading the documents
txts <- as.character(nb$x) # getting the vector x since read.csv stores data in dataset form
mylist[[i]]<-txts # passing the texts stored to the list
}
> mylist
[[1]]
[1] 0 2 1 1
[[2]]
[1] 0 1 1 0
希望对您有所帮助! BR,
PD:请在下一次提供示例。这对于更好地理解问题以及能够重现该问题很重要。