簡體   English   中英

是否可以使用包含字符向量(字符串)的變量命名 tibble 的列?

[英]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 中的列名稱,如果此列名稱發生更改,我希望代碼易於維護。

您可以使用以下解決方案:

  • 為了將列名變量存儲為字符串,我們使用 bang bang 運算符!! 這迫使評估它的后繼名稱
  • 我們還需要使用 walrus :=而不是= ,它們是等效的,並提示您在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM