列表之后是​​什么

时间:2019-02-05 18:08:36

标签: r list

我不熟悉R中的列表-给定3个字符串向量的列表,我想知道TRUE或FALSE出现{strong>之后 {{1} }(即使多次发生)

给出列表:

foo

在R中使用列表索引的结果如何?

bar吗?

2 个答案:

答案 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