[英]Is it possible to name a column of a tibble using a variable containing a character vector (string)?
有沒有辦法使用變量命名小標題的列? 例如,我想命名Clade
下方的第一列。 我嘗試了paste()
和assign()
,但兩個函數似乎都沒有做我想要的。
CLADE_FIELD = "Clade"
LINEAGE_FIELD = "Lineage"
metaDF = tibble(CLADE_FIELD = c("G"),
LINEAGE_FIELD = c("B.666"),
"Submission date" = c("2020-03"))
我在單元測試中使用了這段代碼,這就是我人為地創建這個 tibble 的原因。 該名稱引用了 csv 中的列名稱,如果此列名稱發生更改,我希望代碼易於維護。
您可以使用以下解決方案:
!!
這迫使評估它的后繼名稱:=
而不是=
,它們是等效的,並提示您在 LHS(左側)上提供名稱(就像我們的變量名稱一樣)CLADE_FIELD = "Clade"
LINEAGE_FIELD = "Lineage"
metaDF = tibble(!!CLADE_FIELD := c("G"),
!!LINEAGE_FIELD := c("B.666"),
"Submission date" = c("2020-03"))
# A tibble: 1 x 3
Clade Lineage `Submission date`
<chr> <chr> <chr>
1 G B.666 2020-03
或者我們可以使用雙大括號{{}}
如下:
metaDF = tibble({{CLADE_FIELD}} := c("G"),
{{LINEAGE_FIELD}} := c("B.666"),
"Submission date" = c("2020-03"))
# A tibble: 1 x 3
Clade Lineage `Submission date`
<chr> <chr> <chr>
1 G B.666 2020-03
或者我們可以使用glue
語法,將變量名放在一對大括號{}
,並將結果作為字符串傳遞。 由於膠水語法在:=
的 LHS 上可用,因此您放在花括號中的任何對象(這里是您的變量名稱)都將被評估為 R 代碼:
metaDF = tibble("{CLADE_FIELD}" := c("G"),
"{LINEAGE_FIELD}" := c("B.666"),
"Submission date" = c("2020-03"))
# A tibble: 1 x 3
Clade Lineage `Submission date`
<chr> <chr> <chr>
1 G B.666 2020-03
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.