如何使用存储字符串的变量为tibble指定列名?
解决方案
你可以通过tidy evaluation的动态命名语法直接在创建tibble时使用变量作为列名,也可以创建完成后再修改列名,以下是两种常用实现方式:
方法1:创建时动态指定列名(推荐)
使用:= walrus运算符搭配{}包裹变量,告诉R读取变量的实际值作为列名:
CLADE_FIELD = "Clade" LINEAGE_FIELD = "Lineage" metaDF = tibble( {CLADE_FIELD} := c("G"), {LINEAGE_FIELD} := c("B.666"), "Submission date" = c("2020-03") )
运行后tibble的前两列会自动命名为Clade和Lineage,后续如果要修改列名只需要改前两个变量的赋值即可,符合你可维护性的需求。
方法2:创建后修改列名
如果不想记忆特殊语法,也可以先创建tibble再批量替换列名:
CLADE_FIELD = "Clade" LINEAGE_FIELD = "Lineage" metaDF = tibble( temp1 = c("G"), temp2 = c("B.666"), "Submission date" = c("2020-03") ) colnames(metaDF)[1:2] <- c(CLADE_FIELD, LINEAGE_FIELD)
注:原代码失效的原因是直接在tibble参数左侧写变量名时,R会将其识别为固定字符串列名,不会解析变量的存储值,因此需要用上述特殊语法处理。
内容的提问来源于stack exchange,提问作者Lia_G
相关产品推荐
相关产品推荐

