2017-09-06 101 views
1

獲取錯誤我有2個數據幀在哪個命令

D1 = V1 V2 V3 V4      
     1 2 3 4 
     2 3 4 5 
     3 5 4 2 

D2 = V1 V2 V3 
    1 2 3 
    3 5 4 

我試圖匹配兩個數據幀,並提取行D2的索引與該D1使用哪個但得到的錯誤

的匹配
which(D2[,1:3]==D1[3,1:3]) 


Error in Ops.data.frame : ‘==’ only defined for equally-sized data frames 

(但如果我單獨寫方程,

which(D2[,1]==D1[3,1] & D2[,1]==D1[3,2] & D2[,1]==D1[3,3]) 

是沒有問題的,但我想根兒alise it)
請推薦一些替代品。

+1

你的 「分離」 方程是不等同於原來的。 – Mako212

+0

當我運行單獨的方程時,它總是爲我返回「整數(0)」。也許是數據創建方式的差異。因此,請記住在您的問題中以可重現,可運行的方式創建數據。 –

+0

請注意...... – user2999110

回答

1

這是卓有成效:

which(apply(D2, 1, function(x) all(D1[3,1:3] == x))) 

[1] 2

數據:

D1 <- read.table(text="V1 V2 V3 V4      
1 2 3 4 
2 3 4 5 
3 5 4 2", header=T) 

D2 <- read.table(text="V1 V2 V3 
1 2 3 
3 5 4", header=T) 
+1

非常感謝。這正是我需要的。 :) – user2999110

+0

@ user2999110樂意幫忙!如果您不介意,請檢查綠色複選標記 –