簡體   English   中英

動態更改 R/Tidyverse 中的列名稱 dataframe

[英]Dynamically change column name in R/Tidyverse dataframe

我正在重構以下代碼塊:

my_function(dataframe, "GroupA", 25) %>% 
  arrange(desc(percent)) %>% 
  rename(percent_A=percent)

my_function(dataframe, "GroupB", 50) %>% 
  arrange(desc(percent))%>% 
  rename(percent_B=percent)

my_function(dataframe, "GroupC", 75) %>% 
  arrange(desc(percent))%>% 
  rename(percent_C=percent)

my_function(dataframe, "GroupD",100) %>% 
  arrange(desc(percent))%>% 
  rename(percent_D=percent)

# ...

作為第一步,我想使用命令式方法。 因此我定義了一個矩陣並嘗試編寫一個循環,但是我正在努力動態重命名該列:

params = 
+----------+-----+
| "GroupA" |  25 |
| "GroupB" |  50 |
| "GroupC" |  75 |
| "GroupD" | 100 |
| ...      | ... |
|----------+-----+

for(i in 1:nrow(params)) {
    my_function(dataframe, params[i,1], params[i,2]) %>% 
        arrange(desc(percent)) %>% 
        rename(percent_D=percent)
#                      ^------- here
}

我應該用什么來完成類似的事情: rename("percent" + substring(params[i, 1], 5, 1) = percent)

您可以使用:

for(i in 1:nrow(params)) {
  my_function(dataframe, params[i,1], params[i,2]) %>% 
    arrange(desc(percent)) %>% 
    rename(!!paste0("percent", substring(params[i, 1], 6, 6)) := percent)
}

!! 計算表達式並返回新名稱, :=是必需的,因為您不直接在 LHS 上提供字符串或符號,而是提供表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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