2013-10-14 44 views

回答

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 
+0

非常感謝。這是有道理的,我可以明白爲什麼它會對我所做的(所有三種方式)起作用,但是當我用我的數據嘗試任何方法時,我仍然沒有得到名稱。 我創建我的列表通過綁定向量在一起,所以有3列和數千行。如果我做了你爲其中一個矢量所建議的循環,它會打印出名稱。有沒有辦法編寫代碼,以便我可以將它應用到整個列表並仍然可以獲取名稱? – hmg

+0

沒問題。您可能想要提出一個單獨的問題。我會做'myfun < - function(z)z [which(z> x)]; lapply(DF,myfun)',假設你有一個data.frame ......如果不是'DF < - data.frame(your_mat)'將創建它。 – Frank

相關問題