2016-12-18 61 views
1

我有以下的数据帧dat和列表bR - 如何将文本文件读入列表?

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,而是想将换行符分隔的文件读入R,并且仍然能够使用上面编写的代码创建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中,以便我上面编写的代码仍然有效?

回答

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 

注意得到它:一个list是从vector不同。在list中,元素可以是不同的类型,但是在vector中,它们全都是相同的type。根据所需的输出,看起来vector是我们在这里瞄准的。