![](/img/trans.png)
[英]How to pass a column of file names to mutate and return the number of columns in dplyr
[英]dplyr NSE - how pass column names to mutate function call?
我想在變量中指定的列上使用gsub參數來使數據框的列發生突變,但是我在非標准求值方法上苦苦掙扎。
在這個玩具示例中,我想在調用gsub時使用columns[[1]]
和columns[[2]]
代替.$name_A
和.$name_B
。 我可以還是需要重新考慮自己的方法?
library(tidyverse)
test_df <- tibble(name_A =
c("asdf", "ghjk"),
name_B =
c("qwer", "tyui"))
columns <- c("name_A", "name_B")
test_df %>%
mutate(new_col_A =
gsub(pattern = 'asdf', replacement = 'NEW_VALUE_A', x = .$name_A),
new_col_B =
gsub(pattern = 'tyui', replacement = 'NEW_VALUE_B', x = .$name_B))
你快到了 您可以將rlang::syms
與!!
一起使用!!
做你需要的。
library(tidyverse)
test_df <- tibble(name_A =
c("asdf", "ghjk"),
name_B =
c("qwer", "tyui"))
columns <- rlang::syms(c("name_A", "name_B"))
test_df %>%
mutate(new_col_A =
gsub(pattern = 'asdf', replacement = 'NEW_VALUE_A', x = !! columns[[1]]),
new_col_B =
gsub(pattern = 'tyui', replacement = 'NEW_VALUE_B', x = !! columns[[2]]))
我不是100%肯定你問什么,而是你可以使用正則表達式會發生變異,適用於使用列mutate_at
和matches
:
library(tidyverse)
test_df %>%
mutate_at(vars(matches('A')),
function(.x) gsub(pattern = 'asdf',
replacement = 'NEW_VALUE_A', .x)) %>%
mutate_at(vars(matches('B')),
function(.x) gsub(pattern = 'tyui',
replacement = 'NEW_VALUE_B', .x))
希望有幫助!
編輯-您也可以按索引調用:
test_df %>%
mutate_at(vars(1),
function(.x) gsub(pattern = 'asdf',
replacement = 'NEW_VALUE_A', .x)) %>%
mutate_at(vars(2),
function(.x) gsub(pattern = 'tyui',
replacement = 'NEW_VALUE_B', .x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.