Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用带有内部映射的启动\u,而不是显式命名_R_Tidyselect - Fatal编程技术网

R 使用带有内部映射的启动\u,而不是显式命名

R 使用带有内部映射的启动\u,而不是显式命名,r,tidyselect,R,Tidyselect,我想在TIBLE中应用函数,但不想显式命名列。例如 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,

我想在TIBLE中应用函数,但不想显式命名列。例如

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
我得到一份工作

“错误:未注册tidyselect变量”

非常感谢您的帮助。

试试这个:

with_funct2 = test %>% mutate(blub = pmap_chr(test %>% select(starts_with("var")), paste, sep='+'))
希望它有帮助

您可以使用
select()
内部
pmap\u chr()
来处理以“var”开头的列。我使用点来表示
mutate()
中使用的数据集

这种方法有效的一个原因是
pmap()
在TIBLE中按行工作。按照我的使用方式,列在函数中的使用顺序(在您的例子中是粘贴())是按照它们在数据集中的显示顺序

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
测试%>%
变异(blub=pmap\u chr(选择(,以(“var”)开头),粘贴,sep='+'))
#一个tibble:3x5
var1 var2 var3虚拟blub
1 la-ma-fi 1 la+ma+fi
2乐美法1乐美法
三路木夫一路木夫

这在这里可以正常工作,但是如果在进入此
mutate
之前对数据进行了任何分组或修改,那么这将是错误的:它将使用原始(未修改的
测试
)数据。最好使用(如aosmith所示)占位符
,因为它将包含管道中此时存在的数据。同意!更灵活您的版本可以工作,但我不能只是将“test”更改为“.”,这会引发错误。
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