如何在R函数内调用colnames?求fill函数代码的简化替代方案
简化dplyr fill() 代码的替代方法
当然有不少更简洁的方式来实现这个上下双向填充的需求,我给你整理几个常用的简化写法:
直接使用列名(推荐,可读性最强)
如果你知道第二、第三列的具体名称,直接写列名比用colnames()索引要简洁得多:u %>% fill(列名2, 列名3, .direction = "downup")比如假设列名是
age和city,就写成u %>% fill(age, city, .direction = "downup"),一眼就能看明白要填充哪些列。用
across()选择列位置范围
如果你还是想通过列位置来指定,用across()函数可以直接处理列的范围,替代繁琐的colnames(u)[n]写法:u %>% fill(across(2:3), .direction = "downup")across(2:3)会直接选中数据框的第2到第3列,代码更紧凑。批量填充除指定列外的所有列
要是你的需求是填充除第一列之外的所有列,还可以用负号排除列,写法更灵活:u %>% fill(across(-1), .direction = "downup")这种写法的好处是,哪怕后续数据框的列数增加,只要第一列不需要填充,代码不用修改就能生效。
这些方法都是tidyverse生态里的原生用法,既简化了代码,又保持了可读性,你可以根据自己的实际场景选择最合适的写法~
内容的提问来源于stack exchange,提问作者D. Shin
相关产品推荐
相关产品推荐

