R:在循环向量时使用元素的位置信息。

时间:2012-02-13 15:06:43

标签: r loops vector indexing

循环遍历向量时,是否可以使用元素的索引以及元素?

a.vector< -c(“a”,“b”,“c”,“a”,“d”)

假设我需要a.vector的'first'“a”的索引。 一个人不能使用

  

(a.vector ==“a”)

因为有两个'a'并且它将返回两个位置1和4.我需要循环立即覆盖的元素的特定索引。

我需要这样的东西:

b.vector< -c(“the”,“cat”,“chased”,“a”,“mouse”)

for (i in a.vector) {
    element<-b.vector[INDEX.OF(a.vector)])
-------some process using both 'element' and "a"-------}

这看起来类似于python中的'enumerate'函数。解决方案会有很大帮助。感谢。

2 个答案:

答案 0 :(得分:12)

如何使用索引号循环?

for (i in seq_along(a.vector)){
   a.element <- a.vector[i]
   b.element <- b.vector[i]
   ...
}

答案 1 :(得分:1)

使用which.max代替which。它将从TRUE&gt;中挑选出第一个TRUE的位置。 FALSE。

 which.max(a.vector=="a")
#[1] 1

@James可能比我更了解你的要求。你在文本末尾提出的问题确实比你在主题行中提出的问题要多,所以你可能会澄清一下。我将补充一点,将隐藏形式的“i”的位置及其值传递给R的概念对于R来说是相当陌生的。人们经常会问R是“按值传递”还是“按引用传递”。正确答案是......它是“通过承诺”。然而,这在概念上更接近“通过价值”而不是“通过参考传递”。 for是一个函数,R生成从函数调用传递到其主体的参数的副本。没有“位置”信息可以传播,除非这些信息是您实际要求它通过的信息。