R - 如何将文本文件读入列表?

时间:2016-12-18 01:26:05

标签: r text

我有以下数据框dat和列表b

Word = c("FOO", "BAM", "ZIP")
Count = c(7, 6, 2)
dat = data.frame(Word, Count)

b<-c("FOO")

我正在dat中创建第三列,其打印为TRUE或FALSE,如下所示:

dat<-data.frame(dat$Word,dat$Count, dat$Word %in% b)
colnames(dat)<-c("Word","Count","Condition")

打印:

>dat
Word    Count    Condition
FOO      7       TRUE
BAM      6       FALSE
ZIP      2       FALSE

到目前为止一切顺利。现在我不是手动创建b,而是想在换行符中读取一行换行,并且仍然可以使用我上面编写的代码来创建3列数据框dat

这就是我的意思:

df1 <- read.table(text="FOO\nCAT\nDOG\nFISH\n")
dat<-data.frame(dat$Word,dat$Count, dat$Word %in% df1)
colnames(dat)<-c("Word","Count","Condition")

然而,这会打印出来:

>dat
Word    Count    Condition
FOO      7       FALSE
BAM      6       FALSE
ZIP      2       FALSE

而不是之前的工作方式。我的问题:如何将文件words.txt导入df1,以便我上面编写的代码仍可用?

1 个答案:

答案 0 :(得分:2)

'df1'返回一个data.frame,其中'V1'列为默认命名,因此我们需要提取该列,即

data.frame(Word = dat$Word,Count=dat$Count, Condition= dat$Word %in% df1[[1]])
#  Word Count Condition
#1  FOO     7      TRUE
#2  BAM     6     FALSE
#3  ZIP     2     FALSE

如果我们需要vector,我们可以直接使用scan

v1 <- scan(text="FOO\nCAT\nDOG\nFISH\n", what="", quiet=TRUE)
transform(dat, Condition = Word %in% v1) 
#   Word Count Condition
#1  FOO     7      TRUE
#2  BAM     6     FALSE
#3  ZIP     2     FALSE

注意:listvector不同。在list中,元素可以是不同类型,但在vector中,所有元素都具有相同的type。根据所需的输出,vector似乎是我们的目标。