循环遍历向量时,是否可以使用元素的索引以及元素?
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'函数。解决方案会有很大帮助。感谢。
答案 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生成从函数调用传递到其主体的参数的副本。没有“位置”信息可以传播,除非这些信息是您实际要求它通过的信息。