Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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和loop创建计算每个变量唯一值的多个数据_R_Dplyr - Fatal编程技术网

使用dplyr和loop创建计算每个变量唯一值的多个数据

使用dplyr和loop创建计算每个变量唯一值的多个数据,r,dplyr,R,Dplyr,我对使用dplyr和for循环编程以创建多个数据有一些疑问。没有循环的代码运行得很好,但是带有for循环的代码没有给出预期的结果和错误消息 错误消息如下所示: UseMethod select\中出错:“select\没有适用的方法” 应用于具有类特征的对象 请任何人把我带上正确的道路 下面的代码有效 B <- data %>% select (column1) %>% group_by (column1) %>% arrange (column1) %>% sum

我对使用dplyr和for循环编程以创建多个数据有一些疑问。没有循环的代码运行得很好,但是带有for循环的代码没有给出预期的结果和错误消息

错误消息如下所示:

UseMethod select\中出错:“select\没有适用的方法” 应用于具有类特征的对象

请任何人把我带上正确的道路

下面的代码有效

B <- data %>% select (column1) %>% group_by (column1) %>% arrange (column1) %>% summarise (n = n ())
下面的代码不起作用

column_list <- c ('column1', 'column2', 'column3')

for (b in column_list) {

 a <- data %>% select (b) %>% group_by (b) %>% arrange (b) %>% summarise (n = n () )
 assign (paste0(b), a)
}
。而是使用列表

我们可以在dplyr中使用_at变体,它可以处理字符变量

library(dplyr)

split_fun <- function(df, col) {
  df %>% group_by_at(col) %>% summarise(n = n()) %>% arrange_at(col)
}
这将返回数据帧列表,如果需要,可以使用[[单独]访问这些数据帧

以mtcars为例


谢谢你的评论。你的代码运行得很好。我还有一个问题。你能给我在每个不同数据中分配这些表的额外代码吗?@SangwonSteveLee它已经存在。如果你分配值l1,谢谢你的友好和清晰的解释。你的解决方案运行得很好。
purrr::map(column_list, ~split_fun(data, .))
df <- mtcars
column_list <- c ('cyl', 'gear', 'carb')

purrr::map(column_list, ~split_fun(df, .))

#[[1]]
# A tibble: 3 x 2
#    cyl     n
#  <dbl> <int>
#1     4    11
#2     6     7
#3     8    14

#[[2]]
# A tibble: 3 x 2
#   gear     n
#  <dbl> <int>
#1     3    15
#2     4    12
#3     5     5

#[[3]]
# A tibble: 6 x 2
#   carb     n
#  <dbl> <int>
#1     1     7
#2     2    10
#3     3     3
#4     4    10
#5     6     1
#6     8     1