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)
这两个示例都展示了如何使用自定义比较函数来查找重复行。你可以根据需要修改比较函数以实现不同的比较逻辑。