因此,如果希望在dplyr中逐行应用操作,可以使用rowwise函数,例如:Applying a function to every row of a table using dplyr?
有没有一个unrowwise函数可以用来停止逐行操作?目前看来,在rowwise删除行操作之后添加group_by,例如
data.frame(a=1:4) %>% rowwise() %>% group_by(a)
# ...
# Warning message:
# Grouping rowwise data frame strips rowwise nature 这是否意味着如果您希望显式删除rowwise,则应该使用group_by(1)
发布于 2015-10-23 07:00:15
正如在评论和其他答案中所发现的,正确的方法是使用ungroup()。
操作rowwise(df)将df的一个类设置为rowwise_df。我们可以通过检查代码here来查看该类上的方法,该代码提供了以下ungroup方法:
#' @export
ungroup.rowwise_df <- function(x) {
class(x) <- c( "tbl_df", "data.frame")
x
}所以我们可以看到,ungroup并没有严格地删除分组结构,而只是删除了从rowwise函数中添加的rowwise_df类。
发布于 2020-06-04 19:45:37
只需使用ungroup()即可
以下代码会生成一个警告:
data.frame(a=1:4) %>% rowwise() %>%
group_by(a)
#Warning message:
#Grouping rowwise data frame strips rowwise nature这不会产生警告:
data.frame(a=1:4) %>% rowwise() %>%
ungroup() %>%
group_by(a)发布于 2019-07-18 03:23:28
您可以使用as.data.frame(),如下所示
> data.frame(a=1:4) %>% rowwise() %>% group_by(a)
# A tibble: 4 x 1
# Groups: a [4]
a
* <int>
1 1
2 2
3 3
4 4
Warning message:
Grouping rowwise data frame strips rowwise nature
> data.frame(a=1:4) %>% rowwise() %>% as.data.frame() %>% group_by(a)
# A tibble: 4 x 1
# Groups: a [4]
a
* <int>
1 1
2 2
3 3
4 4https://stackoverflow.com/questions/29762393
复制相似问题