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