2
下面我有一個工作示例,說明我想要執行的功能,然後爲該函數編寫腳本,指出發生錯誤的位置。在一個函數中使用dplyr,使用函數參數對錯誤進行分組
的錯誤信息是:
Error: index out of bounds
我知道通常意味着R可找不到被呼叫的變量。
有趣的是,在我下面的函數示例中,如果我只按我的subgroup_name
(它傳遞給函數併成爲新創建的數據框中的一列)進行分組,則該函數將成功重組該變量,但我也想組由一個新創建的列(來自熔體)稱爲變量。
用於使用regroup()
工作的類似代碼,但已被棄用。我試圖使用group_by_()
但無濟於事。
我已經閱讀了許多其他帖子和答案,今天試驗了幾個小時,但仍然不成功。
# Initialize example dataset
database <- ggplot2::diamonds
database$diamond <- row.names(diamonds) # needed for melting
subgroup_name <- "cut" # can replace with "color" or "clarity"
subgroup_column <- 2 # can replace with 3 for color, 4 for clarity
# This works, although it would be preferable not to need separate variables for subgroup_name and subgroup_column number
df <- database %>%
select(diamond, subgroup_column, x,y,z) %>%
melt(id.vars=c("diamond", subgroup_name)) %>%
group_by(cut, variable) %>%
summarise(value = round(mean(value, na.rm = TRUE),2))
# This does not work, I am expecting the same output as above
subgroup_analysis <- function(database,...){
df <- database %>%
select(diamond, subgroup_column, x,y,z) %>%
melt(id.vars=c("diamond", subgroup_name)) %>%
group_by_(subgroup_name, variable) %>% # problem appears to be with finding "variable"
summarise(value = round(mean(value, na.rm = TRUE),2))
print(df)
}
subgroup_analysis(database, subgroup_column, subgroup_name)
@Richard Scriven - 我想我是,與函數調用在代碼的最後一行:subgroup_analysis(數據庫,subgroup_column,subgroup_name)。但是,應該/可能直接傳遞「cut」和2而不是代理變量。讓我知道如果我失去了一些東西,並感謝您的期待 – 2015-01-27 01:02:32
是的,對不起,我沒有看到最後的電話。你確定你想用點「...」來代替命名參數嗎? – 2015-01-27 01:07:14
我很樂意使用命名參數,而且我也是這樣做的。閱讀關於group_by_導致修補...但我不是那種經驗與他們。 – 2015-01-27 01:08:38