duplicated()
函數是在 R 語言中用于查找重復元素的函數
apply()
函數:custom_duplicated <- function(data, compare_function) {
n <- nrow(data)
duplicated_rows <- c()
for (i in 2:n) {
row_i <- data[i, ]
for (j in 1:(i-1)) {
row_j <- data[j, ]
if (compare_function(row_i, row_j)) {
duplicated_rows <- c(duplicated_rows, i)
break
}
}
}
return(duplicated_rows)
}
# 示例比較函數
compare_function <- function(row1, row2) {
all.equal(row1, row2, tolerance = 1e-6)
}
# 示例數據
data <- data.frame(a = c(1, 2, 3, 1), b = c(4, 5, 6, 4))
# 使用自定義比較函數查找重復行
result <- custom_duplicated(data, compare_function)
print(result)
dplyr
包中的 group_by()
和 filter()
函數:library(dplyr)
custom_duplicated <- function(data, compare_function) {
data %>%
group_by_all() %>%
mutate(count = n()) %>%
filter(count > 1) %>%
select(-count) %>%
ungroup()
}
# 示例比較函數
compare_function <- function(row1, row2) {
all.equal(row1, row2, tolerance = 1e-6)
}
# 示例數據
data <- data.frame(a = c(1, 2, 3, 1), b = c(4, 5, 6, 4))
# 使用自定義比較函數查找重復行
result <- custom_duplicated(data, compare_function)
print(result)
這兩個示例都展示了如何使用自定義比較函數來查找重復行。你可以根據需要修改比較函數以實現不同的比較邏輯。