我有以下数据框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
,以便我上面编写的代码仍可用?
答案 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
注意:list
与vector
不同。在list
中,元素可以是不同类型,但在vector
中,所有元素都具有相同的type
。根据所需的输出,vector
似乎是我们的目标。