我被困在一个噩梦里,一直试图在论坛中找到答案,但没有成功。因此,我想直接提问。
我有一个向量,其中包含随机城市的不规则字符串,我想从包含城市名称的关键字值向量中提取/标记每个这些不规则字符串。例如:
Vector <- c("...the life in Paris is ...","In Roma, there is...","...nice weekend in New York with...")
Cities <- c("London","Paris","Madrid","Roma","New York")
对于向量中的每个字符串,都应有相应的值与城市对应。
一开始我考虑使用循环,但是数据量太大了,R搜索时间太长。我更倾向于使用一种矩阵计算方法和grep结合,但总是出现错误。
您认为这是正确的方法吗?
vapply
而不是sapply
:vapply(Cities, grepl, x=Vector,logical(length(Vector)))
。 - nicolaVector <- c(Vector, "I like Mdrid")
,结果得到了一个由4个元素组成的列表,其中列表一被命名为"I like Mdrid",并且具有值character(0)
。您可以进一步取消此结果的列表,但在此之前,您需要将character(0)
替换为NA
(unlist(lapply(apply(check_vec, 1, function (x) colnames(check_vec)[which(x)]), function(x) {if (!length(x)) x <- NA else x}))
)。 - Cath