[英]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.