2012-10-01 59 views
0

我在下面的方式在矩陣數據:比賽中列有R

label  1  2  3  4 
id_101 10  30  43  32 
id_102 3  32  43  43 
id_111 45  34  22  66 
id_201 87  65  66  34 
id_202 45  76  76  44 
...... 

這個數據已經轉化列表中的所以它是這樣的:

[[1]] 
    [1] label 1  2  
    [3]  3 4 
[[2]] 
    [1] id_101 ..... 

...... 

我要的是知道值a是否匹配來自名爲標籤的列中的一個值。爲此目的,我使用的是與比賽指令循環:

a<-"id_201" ///for example 
for (pos in 2:length(matrix)) 
{ 

    if (!is.na(match(a,tabd[[pos]][[1]]))) 
    { 
     found<-1 
     print(found) 
     break 
    } 
} 
    if (found) print(pos) 

我想知道如果有是看如果從可變一個值下標籤相匹配的列的任何價值的有效途徑並獲得它的位置,但不使用for循環。 謝謝

+0

'lapply(tabd,'[',1)'會給你每個列表中第一個元素的值。 'unlist(lapply(tabd,'[',1))== a'給出了匹配的布爾向量。不過,我認爲您的初始轉換步驟可能會得到改進,因爲它看起來像數據在第2列5中,而第一列是標籤... – Justin

+0

感謝您的建議,我已修復 – Layla

回答

0

我已經做了一個列表,有點像你所描述的,雖然它用雙引號包圍。與它一起工作表明這應該工作

which(sapply(txtList, "[", 1) == a)