如何停止在 dplyr 中使用 rowwise?
How does one stop using rowwise in dplyr?
因此,如果希望在 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)
?
如评论和其他答案中所见,正确的做法是使用 ungroup()
.
运算 rowwise(df)
将 df
的 class 之一设置为 rowwise_df
。我们可以通过检查代码 here 来查看此 class 上的方法,它给出了以下 ungroup
方法:
#' @export
ungroup.rowwise_df <- function(x) {
class(x) <- c( "tbl_df", "data.frame")
x
}
所以我们看到 ungroup
并没有严格删除分组结构,而只是删除了 rowwise
函数添加的 rowwise_df
class。
您可以使用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 4
只需使用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)
因此,如果希望在 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)
?
如评论和其他答案中所见,正确的做法是使用 ungroup()
.
运算 rowwise(df)
将 df
的 class 之一设置为 rowwise_df
。我们可以通过检查代码 here 来查看此 class 上的方法,它给出了以下 ungroup
方法:
#' @export
ungroup.rowwise_df <- function(x) {
class(x) <- c( "tbl_df", "data.frame")
x
}
所以我们看到 ungroup
并没有严格删除分组结构,而只是删除了 rowwise
函数添加的 rowwise_df
class。
您可以使用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 4
只需使用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)