-1

我的问题很简单,我有一个文件,其中每行包含大量推文,没有被引号包围。阅读文件后,我创建了“数据集”,将其随机化并消除重复:

dataset <- read.table(file, header=FALSE, sep="\n", stringsAsFactors=F)
unique_ds <- unique.data.frame(dataset)
random_ds <- unique_ds[sample(nrow(unique_ds)),]
write.table(data.frame(random_ds),file="tweets_final.txt", sep="\n", quote=F, col.names=F, row.names=F)

random_ds2246行。但是当我打开我刚刚创建的文件时,我看到超过 5000 行

第一个问题:我就是不明白问题出在哪里。它可能在 write.table 或上面的代码中?

[考虑在原始文件中的每条推文中,我已经删除了换行符和回车符;Java代码如下]

out = out.replaceAll("[\n\r]", " ");

第二个问题:假设每行添加一个新变量(例如推文的类别),当我将在 R 中读回它时,就像 csv 文件一样,这种格式是否合适:“我的推文”,输入下面的代码?

ds <- read.csv(file = "tweet_classified.txt", header = FALSE, sep = ",",stringsAsFactors = FALSE, quote = "\"")

特别是我如何在 Java/R 中管理引号内的引号问题?

谢谢

重要的是我刚刚考虑了一个事实,很明显,推特数据包含#字符,所以我会问另一个问题:是否可以用 \n 代替主题标签?或者只是将其视为评论,并在 # 之后丢弃该部分

4

1 回答 1

0

好的,我用替换解决了 read.table问题gsub("\"","'",readLines(con))。当我写文件时,我将使用quote=T

这是我的代码:

file_list <- list.files()

for (file in file_list){
   con <- file(file)

   if (!exists("dataset")){
      dataset <- data.frame(gsub("\"","'",readLines(con)),stringsAsFactors = F)
   }

   if (exists("dataset")){
      temp_dataset <- data.frame(gsub("\"","'",readLines(con)),stringsAsFactors = F)
      dataset<-rbind(dataset, temp_dataset)
      rm(temp_dataset)


    }
  close.connection(con)
}

unique_ds <- unique.data.frame(dataset)
random_ds <- unique_ds[sample(nrow(unique_ds)),]
write.table(data.frame(random_ds, stringsAsFactors = F),file="unclassified.txt",col.names = F, row.names = F, quote = T)

然后在阅读阶段:

dataset <- read.csv(file="unclassified.txt", header=FALSE, stringsAsFactors = FALSE,quote="\"")
于 2015-10-02T14:29:15.687 回答