2017-10-29 37 views
0

我試圖通過運行calc_center功能來計算每個組的中心dplyrgroup_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

回答

0

的問題是在你的函數calc_center,在cov.troby越來越分配給wt

?MASS::cov.trob

cov.trob(x, wt = rep(1, n), cor = FALSE, center = TRUE, nu = 5, 
    maxit = 25, tol = 0.01) 

你會看到x是類型的矩陣,這將舉行您緯度經度

0

在未來,如果你提供這將會是不錯的,至少的一個簡單的例子您的數據用於故障排除/再現性目的。

該問題很可能是因爲您希望將函數應用於LatitudeLongitude列的每一行。 在這種情況下,使用dplyr::rowwise()應解決問題:

E.g .;

results <- data %>% 
group_by(group) %>% 
rowwise() %>% 
summarise(center=calc_center(Latitude, Longitude)) 

你也很可能逃脫使用mutate代替summarise

希望有幫助!