r - 尝试比较两个数据帧,并将逻辑结果写入 R 中的新数据帧
问题描述
我有一个包含 18 列的 R 数据框,我想编写一个比较第 1 列和第 2 列的函数,如果两列包含相同的值,则将 T 或 F 的逻辑结果写入新列(这部分对我来说不是太难),但是我想为下一列重复此过程并将 T/F 写入新列。
值 col 1 = 值 col 2,将 T/F 写入新列,值 col 3 = 值 col 4,将 T/F 写入新列(或将结果写入新数据帧)
我一直在尝试用这个purrr
包来做这个,并使用这个pmap/map
功能,但我知道我犯了一个错误,错过了一些重要的部分。
解决方案
如果我正确理解您的问题,此功能应该可以工作。
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)
推荐阅读
- swift - 带有视网膜的 Swift CGContext
- arrays - PostgreSQL - 数组作为函数参数
- vue.js - 链接到页面的特定部分 - Vuejs
- c++ - 带有临时 std::promise 的 std::future
- jdbc - 在 Zeppelin 中保存 AWS Athena 查询的结果
- python - 如何解决TypeError:只能将str(不是“int”)连接到str
- javascript - 光滑的旋转木马不起作用
- excel - VBA 查找在特定单元格中手动写入的两个日期之间的信息
- r - R-将绘图对象转换为列表
- c# - 使用 WPF ui 进行多线程处理