R - 汇总误差(数据,点):列中心必须是长度1(汇总值),而不是2
问题描述:
我试图通过运行calc_center
功能来计算每个组的中心dplyr
的group_by_
和summarise
功能。但是,我收到一个错误消息,说该列必须是1列而不是2列。我能做些什么绕过它?这是我的代码。R - 汇总误差(数据,点):列中心必须是长度1(汇总值),而不是2
library(dplyr)
library(car)
calc_center <- function(x,y){
MASS::cov.trob(cbind(x, y)$center
}
results <- data %>%
group_by(group) %>%
summarise(center=calc_center(Latitude, Longitude))
这是我的错误
Error in summarise_impl(.data, dots) :
列center
长度必须为1(一个汇总值),而不是2
答
的问题是在你的函数calc_center
,在cov.trob
的y
越来越分配给wt
在?MASS::cov.trob
cov.trob(x, wt = rep(1, n), cor = FALSE, center = TRUE, nu = 5,
maxit = 25, tol = 0.01)
你会看到x
是类型的矩阵,这将举行您纬度和经度
答
在未来,如果你提供这将会是不错的,至少的一个简单的例子您的数据用于故障排除/再现性目的。
该问题很可能是因为您希望将函数应用于Latitude
和Longitude
列的每一行。 在这种情况下,使用dplyr::rowwise()
应解决问题:
E.g .;
results <- data %>%
group_by(group) %>%
rowwise() %>%
summarise(center=calc_center(Latitude, Longitude))
你也很可能逃脱使用mutate
代替summarise
。
希望有帮助!