【发布时间】:2018-03-08 18:02:37
【问题描述】:
我正在处理R 中的一些文本,我想完成一项任务,将一个数据帧中的字符串与保存在其他数据帧中的字符串进行比较,并在巧合时在第一个数据帧中分配一个值。我的初始数据框是DF1:
DF1 <- data.frame(v1=c("A cat in sun", "A silver arrow", "A deep sun"), v2=c(1,2,3),stringsAsFactors=F)
其中v1 是用来做对比的文本变量。 DF2 是保存文本链以进行比较的数据框:
DF2 <- data.frame(key = c("arrow|spyder|car", "cat|met|shoe", "sun|moon|earth"), value = c("D","M", "A"), stringsAsFactors=F)
然后,必须使用来自DF2 的v1 和key 对DF1 中的每一行进行比较以分配value。我已经使用grepl 进行了测试,仅使用以下值:
grepl("cat|met|shoe", "A cat in sun")
这可行,但问题是当我尝试在DF1 中使用相同的逻辑时,结构如下:
DF1$Var <- DF2[grepl(DF2$key, DF1$v1), "value"]
我无法得到预期的结果:
DF3 <- data.frame(v1=c("A cat in sun", "A silver arrow", "A deep sun"), v2=c(1,2,3), Var = c("M", "D", "A"),stringsAsFactors=F)
【问题讨论】: