【发布时间】:2019-09-08 18:10:23
【问题描述】:
我有大量数据集,我想为其创建相同的变量。我想创建一个函数以避免多次重复相同的代码。
我尝试了下面的代码:前 3 行描述了我试图通过下面创建的函数应用的变量的创建。
data1 <- data1 %>%
dplyr::group_by(id)%>%
dplyr::mutate(new_var = sum(score))
list_data <- c(data1, data2, data3)
my_func <- function(x) {
x <- x %>%
dplyr::group_by(id) %>%
dplyr::mutate(new_var = sum(score))
}
lapply(list_data, my_func)
我得到错误信息
没有适用于类对象的“group_by”方法 “性格”。
你能帮我解决这个问题吗?
【问题讨论】:
-
你的函数没有使用参数
x -
此外,您在
group_by()之后缺少一个点符号(%>%) -
另外,我认为使用
c(会连接所有数据,而不是列出数据结构。尝试改用list_data <- list(data1, data2, data3)。 -
糟糕的是,这些都是拼写错误,我确实运行了代码的编辑版本。 @RomainB。我确实尝试过,但它并没有改变结果。
-
@unisateur 这取决于你的数据结构,但如果你特别想要任何对象的 list,使用
list会更安全,因为它总是会以这种方式运行。举个例子,如果 data1、2 和 3 是数据帧,那么c(函数将列出一个包含所有列的大列表,而不是像list那样包含 3 个数据帧的列表。
标签: r dataframe dplyr dataset lapply