Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
将多个列变为一个函数将为dplyr中结果列内的每个组件创建一个列表_R_Dplyr_Tidyverse_Tidycensus - Fatal编程技术网

将多个列变为一个函数将为dplyr中结果列内的每个组件创建一个列表

将多个列变为一个函数将为dplyr中结果列内的每个组件创建一个列表,r,dplyr,tidyverse,tidycensus,R,Dplyr,Tidyverse,Tidycensus,我有一个包中的函数(TidySensus),我想通过管道使用它并进行变异。我创建了这个简单的模型来展示这种情况 library(tidycensus) tt <- as_data_frame(matrix(1:36, ncol = 6)) colnames(tt) <- c("A", "B", "C", "D", "E", "F") tt2 <- tt %>% mutate(moe=moe_prop(.[,"A"],.[,"C"], .[,"D"],.[,"B"]))

我有一个包中的函数(TidySensus),我想通过管道使用它并进行变异。我创建了这个简单的模型来展示这种情况

library(tidycensus)

tt <- as_data_frame(matrix(1:36, ncol = 6))
colnames(tt) <- c("A", "B", "C", "D", "E", "F")
tt2 <- tt %>% mutate(moe=moe_prop(.[,"A"],.[,"C"], .[,"D"],.[,"B"]))
库(tidycensus)

tt基于输入数据集,假设我们每行只需要一个值,在每行上执行
moe_prop
,将列名转换为符号,然后进行计算(
!!!

或者执行rowwise()操作

tt %>%
    rowwise %>% 
    mutate(moe = moe_prop(A, C, D, B))
通过单独检查行值

moe_prop(1, 13, 19, 7)
#[1] 1.460951

moe_prop(2, 14, 20, 8)
#[1] 1.426237
您可以使用
unest()

库(dplyr)
图书馆(tidyr)
图书馆(tidycensus)
tt#A tibble:36 x 7
#>A B C D E F moe
#>          
#>  1     1     7    13    19    25    31  1.46
#>  2     1     7    13    19    25    31  1.43
#>  3     1     7    13    19    25    31  1.39
#>  4     1     7    13    19    25    31  1.37
#>  5     1     7    13    19    25    31  1.34
#>  6     1     7    13    19    25    31  1.31
#>  7     2     8    14    20    26    32  1.46
#>  8     2     8    14    20    26    32  1.43
#>  9     2     8    14    20    26    32  1.39
#> 10     2     8    14    20    26    32  1.37
#> # ... 还有26行

由(v0.2.0.9000)于2018年9月12日创建。

非常感谢。这真是太棒了。但是如果我想直接给出列的名称呢?在我的实际问题中,输入列的名称在不同的运行中是不同的,因为它们的编号也可能不同,因此列索引可能会改变,所以每次我有一组列名时。@BobbyF,添加了另一个选项,这会有点慢。在第一种情况下,我们直接转换列名。唯一的问题是我做这件事比较容易。相反,你可以做
tt%>%的变异(moe=moe_prop(!!!rlang::syms(c(“A”,“c”,“D”,“B”)))
噢,对了!!我想是基本的R。完全忘记了。非常感谢。
tt %>%
   mutate(moe = moe_prop(!!! rlang::syms(c("A", "C", "D", "B"))))
tt %>%
    rowwise %>% 
    mutate(moe = moe_prop(A, C, D, B))
moe_prop(1, 13, 19, 7)
#[1] 1.460951

moe_prop(2, 14, 20, 8)
#[1] 1.426237