我不熟悉R中的列表-给定3个字符串向量的列表,我想知道TRUE或FALSE出现{strong>之后 {{1} }(即使多次发生)
给出列表:
foo
在R中使用列表索引的结果如何?
bar
吗?
答案 0 :(得分:4)
如果您指的是 foo 和 bar 中的每一个的第一个实例(即,第一个出现)
sapply(x, function(vec) min(which(vec == 'foo')) > min(which(vec=='bar')))
如果您的意思是 bar
的 any 实例之后出现 foo 的 any 实例sapply(x, function(vec) max(which(vec == 'foo')) > min(which(vec=='bar')))
答案 1 :(得分:2)
一个选项是match
,以获取首次出现的'foo'和'bar'的索引,并使用该索引创建逻辑vector
sapply(x, function(y) {i1 <- match(c("foo", "bar"), y); i1[1] > i1[2]})
#[1] FALSE TRUE TRUE
或使用which
sapply(x, function(y) which(y == "foo")[1] > which(y == "bar")[1])
或paste
设置元素后使用正则表达式
grepl("bar.*foo", sapply(x, paste, collapse = ' '))
#[1] FALSE TRUE TRUE