2016-12-18 62 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是我們在這裏瞄準的。