之間的差異當使用R,我通常使用identical(a,b)
,以檢查對象a
和b
是相同的。如果這返回FALSE
我希望能夠看到這些差異在哪裏......是否有一個函數可以告訴我這個?函數來顯示的兩個或更多個對象
3
A
回答
1
可以使用
a == b
這將有FALSE
值,其中兩個對象有不同的價值觀創建邏輯值的對象。
您還可以使用:
a[a != b]
或
b[a != b]
,看看那裏的差異。
5
您正在尋找all.equal()
a <- data.frame(A = 1)
b <- data.frame(B = 1)
all.equal(a, b)
[1] "Names: 1 string mismatch"
d <- data.frame(B = 2)
all.equal(b, d)
"Component 1: Mean relative difference: 1"
all.equal(a, d)
[1] "Names: 1 string mismatch"
[2] "Component 1: Mean relative difference: 1"
4
這並不完全回答你的問題,但你也可能有興趣在"compare" package。
特別,有一種說法「allowAll=TRUE
」到compare()
功能,這似乎試圖變換比較對象來匹配輸入,並說是需要什麼樣的變革和目標是否然後是相同的。
首先是一些數據。 「a」,「b」,「d」和「e」非常相似。
a <- data.frame(A = 1:10, B = LETTERS[1:10])
b <- data.frame(C = 1:10, B = LETTERS[1:10])
d <- data.frame(A = 1:10, B = letters[1:10])
e <- data.frame(A = 1:10, B = letters[1:10])
f <- data.frame(A = c(1, 3, 4, 5, 6, 7, 8, 11, 12, 13),
B = LETTERS[c(1, 3, 2, 4, 5, 6, 9, 8, 7, 10)])
現在,使用比較看看它是否能夠使數據相同。對於「b」,「d」和「e」,它能夠應用某些轉換使其與「a」相同,但在比較「f」和「a」時無法這樣做。
(w <- compare(a, b, allowAll=TRUE))
# TRUE
# renamed
# dropped names
(x <- compare(a, d, allowAll=TRUE))
# TRUE
# [B] dropped attributes
(y <- compare(a, e, allowAll=TRUE))
# TRUE
# [B] dropped attributes
(z <- compare(a, f, allowAll=TRUE))
# FALSE [FALSE, FALSE]
# [A] coerced from <numeric> to <integer>
您還可以看到有關比較對象的更多詳細信息。
str(x)
# List of 8
# $ result : logi TRUE
# $ detailedResult : Named logi [1:2] TRUE TRUE
# ..- attr(*, "names")= chr [1:2] "A" "B"
# $ transform : Named chr "[B] dropped attributes"
# ..- attr(*, "names")= chr "B"
# $ tM :'data.frame': 10 obs. of 2 variables:
# ..$ A: int [1:10] 1 2 3 4 5 6 7 8 9 10
# ..$ B: int [1:10] 1 2 3 4 5 6 7 8 9 10
# $ tC :'data.frame': 10 obs. of 2 variables:
# ..$ A: int [1:10] 1 2 3 4 5 6 7 8 9 10
# ..$ B: int [1:10] 1 2 3 4 5 6 7 8 9 10
# $ tMpartial :'data.frame': 10 obs. of 2 variables:
# ..$ A: int [1:10] 1 2 3 4 5 6 7 8 9 10
# ..$ B: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10
# $ tCpartial :'data.frame': 10 obs. of 2 variables:
# ..$ A: int [1:10] 1 2 3 4 5 6 7 8 9 10
# ..$ B: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
# $ partialTransform: chr(0)
# - attr(*, "class")= chr [1:2] "multipleComparison" "comparison"
該軟件包還包含其他幾個函數,以及許多可以限制或擴展比較前允許的轉換類型的參數。
0
我曾經有機會確定兩個數據框c1和c2的不同之處,並創建了像這樣的快速入侵。繼續調整,如果對你有幫助。
for (i in 1:nrow(c1)) {
if (!identical(c1[i,], c2[i,])) {
print(paste("Differs in row", i))
stop()
}
}
相關問題
- 1. C#合併兩個或多個對象
- 2. 挖掘兩個或多個對象
- 3. 顯示多個對象數組列表?
- 4. 如何將兩個或更多列映射到一個對象?
- 5. 在一個樣條圖中顯示兩個(或更多)?
- 6. 將開關語句更改爲兩個或更多函數,每個函數
- 7. 使用emberjs didInsertElement來顯示兩個單獨的日曆或兩個實例一個jquery fullcalendar插件對象
- 8. PHP顯示一個選擇對象,來自多個陣列
- 9. 通過addView()顯示兩個View對象()
- 10. 顯示連續對象的多個值
- 11. 顯示多個對象的openGL
- 12. 顯示多個對象的內容?
- 13. 以兩個或多個select語句水平顯示數據
- 14. 加入多個表來顯示3個表或多個
- 15. 無法在GridView顯示兩個或更多個數據行與List
- 16. GraphQL - 顯示列表或單個對象
- 17. 表顯示了兩個:「一對多」
- 18. 在一個AJAX數據表列中顯示兩個對象
- 19. 來自兩個表的一個對象
- 20. 異或兩個對象
- 21. 在網頁中顯示兩個或更多日曆?
- 22. Android - 如何在兩個或更多視圖中顯示相機
- 23. C++結合來自兩個(或更多)參數包的值
- 24. 如何同時執行兩個或更多JavaScript的函數?
- 25. 加入兩個表來顯示數據
- 26. 顯示來自兩個表的數據,但第二個表的數據比第一個數據更多
- 27. 如何顯示兩個String對象是否更改?
- 28. 在NSTableView行中顯示多個對象
- 29. 從服務器顯示多個對象
- 30. JSONP角度js顯示多個對象
這將如何顯示我的差異在哪裏? –
您可以編寫一個函數來顯示這些差異,其中所述值爲'FALSE'。 –
@ h.l.m我在我的答案中添加了一些信息。希望這會對你有所幫助。 –