簡體   English   中英

差異使用lapply和apply應用“相同”功能

[英]Differences applying “identical” function using lapply and apply

使用lapplyapply函數測試相同的值會產生不一致的結果。

我正在執行以下操作:

test <- read.table(text="
V6  V7  V8
1 109 109 109
2 199 199 199
3 198 198 198
4 199 199 199
5 198 198 198
6 199 199 199", header=T)
for (i in 1:nrow(test)){
  print(identical(test[1, 1],
          test[1, 2],
          test[1, 3]))
}
# [1] TRUE
# [1] TRUE
# [1] TRUE
# [1] TRUE
# [1] TRUE
# [1] TRUE
do.call("rbind", lapply(1:nrow(test),
                        function(x){
                            identical(test[x, 1],
                                      test[x, 2],
                                      test[x, 3])
                        }))
#      [,1]
# [1,] TRUE
# [2,] TRUE
# [3,] TRUE
# [4,] TRUE
# [5,] TRUE
# [6,] TRUE
apply(test, 1, function(x){
    identical(x[1], x[2], x[3])
})
#     1     2     3     4     5     6 
# FALSE FALSE FALSE FALSE FALSE FALSE

我不太了解這種矛盾。

它與數據的列名有關。 考慮以下示例:

a <- t(matrix(c(1, 1, 1, 2, 2, 2), 3, 2))
apply(a, 1, function(x) identical(x[1], x[2], x[3]))
[1] TRUE TRUE
colnames(a) <- letters[1:3]
apply(a, 1, function(x) identical(x[1], x[2], x[3]))
[1] FALSE FALSE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM