【发布时间】:2019-02-17 13:52:25
【问题描述】:
我正在尝试使用 dplyr 解析 data.frame 的案例(行),但无济于事。我为此创建了两个函数:
f1 <- function(x) {
c(s = sum(x),
m = mean(x),
v = var(x))
}
f2 <- function(x) {
apply(x, 1, f1)
}
我的data.frame (data_1):
for (i in 1:6) {
assign(paste('var', i, sep = '_'),
runif(30, 20, 100))
}
data_1 <- do.call(
cbind.data.frame,
mget(ls(pattern = '*v'))
)
使用dplyr 函数:
library(dplyr)
data_1 %>%
mutate_at(.vars = vars (starts_with('v')),
.funs = funs(.= f2))
data_1 %>%
mutate_if(is.numeric, .funs = funs(.= f2))
mutate_impl(.data, dots) 中的错误:评估错误:dim(X) 必须具有正长度。
由于分析是按行进行的,并且我有三个函数(求和、均值和方差),因此预期收益是三列。
【问题讨论】:
-
apply(x, 1, f1)如果x的维度小于 2,则没有多大意义。dplyr::mutate_*逐列而不是逐行应用函数。 -
如何解决?
-
好的手机,所以我无法检查文档,但是 rowwise() 会解决这个问题吗?或者,您可以转置 data1
-
解决方案如何使用 rowwise?