R语言将数据框两列元素按行配对生成向量列表的实现方法
R语言按行配对数据框两列元素的实现方法
原有代码错误原因
- 数据集与列名不匹配:你定义的数据集是
df,列名为g1、g2,但循环里调用的是bact$group1、bact$group2,无法读取到对应数据 - 函数用法错误:
paste(x,y)会直接把两个值拼接为单个字符串,combn在此场景下属于冗余调用,你需要的是将两个值组合为双元素字符向量,不需要拼接或额外组合计算
正确实现方法
方法1:修正循环逻辑
mark.list <- list() for(i in 1:nrow(df)){ # 提取对应行的两个值转字符后组合为向量 row_vec <- c(as.character(df$g1[i]), as.character(df$g2[i])) mark.list[[i]] <- row_vec }
方法2:简洁向量化实现(无需写循环)
用asplit按行拆分后统一转字符,代码更短、大数据集下执行效率更高:
mark.list <- lapply(asplit(df, 1), as.character)
结果验证
运行以下代码可核对结果是否符合预期:
identical(mark.list, list(c("1","3"),c("2","4"),c("3","5"),c("4","6"),c("5","7"),c("6","8"),c("7","9"),c("8","10"),c("9","11"),c("10","12"),c("11","13"),c("12","67")))
返回TRUE即说明结果完全正确。
内容的提问来源于stack exchange,提问作者GOGA GOGA
相关产品推荐
相关产品推荐

