如何在一行代码中为cbind()的向量动态设置列名(Base R)
在Base R中用动态生成的字符作为cbind的列名
下面是几种紧凑的实现方式,均基于Base R:
方式一:用
setNames构造命名列表传入
这是最直接的紧凑写法,适配单列或多列场景:cbind(setNames(list(1:4), as.character(1)))运行输出:
1 [1,] 1 [2,] 2 [3,] 3 [4,] 4方式二:用
do.call动态传递参数
若需批量生成多个列名,这种方式扩展性更强:do.call(cbind, setNames(list(1:4, 5:8), c(as.character(1), as.character(2))))输出:
1 2 [1,] 1 5 [2,] 2 6 [3,] 3 7 [4,] 4 8方式三:直接修改输出列名(单列极简版)
针对单列场景,可使用函数式赋值的一行写法:`colnames<-`(cbind(1:4), as.character(1))结果与第一种方式完全一致。
原代码报错的原因是:R的参数命名规则不允许在等号左侧直接放置表达式,必须传入合法变量名或提前构造好的命名对象。
内容的提问来源于stack exchange,提问作者clp
相关产品推荐
相关产品推荐

