基于“两个”参数返回列表的值

时间:2018-03-15 22:02:34

标签: r

对R来说很新。所以我想知道你是否可以使用两个不同的参数来从列表中获取两个元素的位置。见下面的例子......

x <- c("A", "B", "A", "A", "B", "B", "C", "C", "A", "A", "B")
y <- c(which(x == "A"))

[1]  1  3  4  9 10

x[y]
[1] "A" "A" "A" "A" "A"

x[y+1]
[1] "B" "A" "B" "A" "B"

但我想在同一个列表中将y和y + 1的位置一起返回。我目前的解决方案是按行号合并上面两个列表,并从那里创建一个数据帧。我真的不喜欢那样,并且想知道是否还有另一种方式。谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道你想要什么,但这可能会有所帮助:

newY = c(which(x == "A"),which(x == "A")+1)

之后,您可以使用

对其进行排序
  finaldata <- newY[order(newY)] 

或者您只需一步完成:

finaldata <- c(which(x == "A"),which(x == "A")+1)[order(c(which(x == "A"),which(x == "A")+1))]

然后,如果您愿意,也可以删除重复项。请告诉我这是否是你想要的。