获取在`for`中循环的命名向量成员的名称

时间:2015-09-06 02:18:59

标签: r

我有一个命名向量:myvec <- c(a='aaa', b='bbb', c='ccc'),我用for处理它:

for (memb in myvec){
 cat(memb, '\n');
}

这样可以正常工作,但是如果我想在相同的周期中获取名称,那会怎么样:

for (memb in myvec){
 cat(name(memb)); # something for `name()`
 cat(': ', memb, '\n');
}

2 个答案:

答案 0 :(得分:2)

是否有任何理由无法使用myvec的索引进行循环?

myvec <- c(a='aaa', b='bbb', c='ccc', b='ddd')

for(i in 1:length(myvec)){
    cat(names(myvec)[i])
    cat(': ', myvec[i], '\n')
} 

答案 1 :(得分:0)

这取决于您对重复项的处理方式。这是我的简单解决方案:

myvec <- c(a='aaa', b='bbb', c='ccc',d='bbb')
for (memb in myvec){
  cat(names(myvec[myvec==memb])); # returns all names of the value
  cat(': ', memb, '\n');
}

输出:

a:  aaa 
b d:  bbb 
c:  ccc 
b d:  bbb