我有一个包含18列的R数据帧,我想编写一个将第1列与第2列进行比较的函数,如果两个列包含相同的值,则将T或F的逻辑结果写入新列(这部分对我来说并不难),但是我想在下一列中重复此过程,并将T / F写入新列。
值col 1 =值col 2,将T / F写入新列,值col 3 =值col 4,将T / F写入新列(或将结果写入新数据框)
我一直在尝试使用purrr
软件包并使用pmap/map
函数,但是我知道我犯了一个错误并且缺少了一些重要的部分。
答案 0 :(得分:0)
如果我正确理解了您的问题,此功能应该可以工作。
df <-
data.frame(a = c(18, 6, 2 ,0),
b = c(0, 6, 2, 18),
c = c(1, 5, 6, 8),
d = c(3, 5, 9, 2))
compare_columns <-
function(x){
n_columns <- ncol(x)
odd_columns <- 2*1:(n_columns/2) - 1
even_columns <- 2*1:(n_columns/2)
comparisons_list <-
lapply(seq_len(n_columns/2),
function(y){
df[, odd_columns[y]] == df[, even_columns[y]]
})
comparisons_df <-
as.data.frame(comparisons_list,
col.names = paste0("column", odd_columns, "_column", even_columns))
return(cbind(x, comparisons_df))
}
compare_columns(df)