如何在列表中打印大于特定数字的值以及R中的行名?

时间:2013-10-14 03:30:15

标签: r loops

我是R的新手。我有一个数据列表,我写了一个循环来查找哪些值大于某个数字:

for (i in listname){
    if(i > x)
    print(i)
}

我希望打印的值还包括行名...我该怎么做呢? 谢谢你的耐心等待。

1 个答案:

答案 0 :(得分:1)

奇怪的是,当项目本身是迭代器时,名称就会丢失。如果您改为迭代项目编号,print按预期工作:

for (i in 1:length(listname)){
    if (listname[i] > x){
        print(listname[i]) # value with name
    } 
}

一旦你学到了更多关于R的知识,你可能希望以“矢量化”的方式做到这一点,而不是使用循环:

idx <- which(listname > x) # row numbers
listname[idx]              # values with names

或使用逻辑子集

gt_x<-  listname > x       # TRUE or FALSE
listname[gt_x]             # values with names

示例:尝试使用

listname <- 1:10
names(listname) <- letters[1:10]
x <- 4
idx <- which(listname > x) # row numbers
listname[idx]              # values with names
# e  f  g  h  i  j 
# 5  6  7  8  9 10