在地图中使用 starts_with 而不是显式命名
Use starts_with inside map instead of explicitly naming
我想在 tibble 中应用一个函数,但我不想明确命名列。例如
library(tidyverse)
library(tidyselect)
test = tibble(var1 = c("la", "le", "lu"), var2 = c("ma", "me", "mu"), var3 = c("fi", "fa", "fu"), dummy=1)
with_funct = test %>% mutate(blub = pmap_chr(list(var1, var2, var3), paste, sep='+'))
我得到了预期的结果:
# A tibble: 3 x 5
var1 var2 var3 dummy blub
<chr> <chr> <chr> <dbl> <chr>
1 la ma fi 1 la+ma+fi
2 le me fa 1 le+me+fa
3 lu mu fu 1 lu+mu+fu
但是我宁愿使用 starts_with("var")
而不是写 list(var1, var2, var3)
但这行不通。
所以如果我使用
with_funct = test %>% mutate(blub = pmap_chr(starts_with("var"), paste, sep='+'))
我得到一个
"Error: No tidyselect variables were registered"
如有任何帮助,我将不胜感激。
试试这个:
with_funct2 = test %>% mutate(blub = pmap_chr(test %>% select(starts_with("var")), paste, sep='+'))
希望对您有所帮助
您可以在 pmap_chr()
中使用 select()
来处理以 "var" 开头的列。我使用点来指代 mutate()
.
中使用的数据集
之所以可行,原因之一是 pmap()
在 tibble 中按行工作。我使用这个列的方式按照它们在数据集中出现的顺序在函数中使用(paste()
在你的例子中)。
test %>%
mutate(blub = pmap_chr(select(., starts_with("var")), paste, sep='+'))
# A tibble: 3 x 5
var1 var2 var3 dummy blub
<chr> <chr> <chr> <dbl> <chr>
1 la ma fi 1 la+ma+fi
2 le me fa 1 le+me+fa
3 lu mu fu 1 lu+mu+fu
我想在 tibble 中应用一个函数,但我不想明确命名列。例如
library(tidyverse)
library(tidyselect)
test = tibble(var1 = c("la", "le", "lu"), var2 = c("ma", "me", "mu"), var3 = c("fi", "fa", "fu"), dummy=1)
with_funct = test %>% mutate(blub = pmap_chr(list(var1, var2, var3), paste, sep='+'))
我得到了预期的结果:
# A tibble: 3 x 5
var1 var2 var3 dummy blub
<chr> <chr> <chr> <dbl> <chr>
1 la ma fi 1 la+ma+fi
2 le me fa 1 le+me+fa
3 lu mu fu 1 lu+mu+fu
但是我宁愿使用 starts_with("var")
而不是写 list(var1, var2, var3)
但这行不通。
所以如果我使用
with_funct = test %>% mutate(blub = pmap_chr(starts_with("var"), paste, sep='+'))
我得到一个
"Error: No tidyselect variables were registered"
如有任何帮助,我将不胜感激。
试试这个:
with_funct2 = test %>% mutate(blub = pmap_chr(test %>% select(starts_with("var")), paste, sep='+'))
希望对您有所帮助
您可以在 pmap_chr()
中使用 select()
来处理以 "var" 开头的列。我使用点来指代 mutate()
.
之所以可行,原因之一是 pmap()
在 tibble 中按行工作。我使用这个列的方式按照它们在数据集中出现的顺序在函数中使用(paste()
在你的例子中)。
test %>%
mutate(blub = pmap_chr(select(., starts_with("var")), paste, sep='+'))
# A tibble: 3 x 5
var1 var2 var3 dummy blub
<chr> <chr> <chr> <dbl> <chr>
1 la ma fi 1 la+ma+fi
2 le me fa 1 le+me+fa
3 lu mu fu 1 lu+mu+fu