【发布时间】:2019-07-12 15:44:45
【问题描述】:
我有一个调查,我试图按年份分组,并计算某些变量的总数。我需要使用不同的变量执行此操作大约 20 次,所以我正在编写一个函数,但我似乎无法正常工作,即使它在函数外工作正常。
这很好用:
mepsdsgn %>% group_by(YEAR) %>% summarise(tot_pri = survey_total(TOTPRV)) %>% select(YEAR, tot_pri)
当我尝试一个功能时:
total_calc <- function(x) {mepsdsgn %>% group_by(YEAR) %>% summarise(total = survey_total(x)) %>% select(YEAR, total)}
total_calc(TOTPRV)
我收到此错误:stop_for_factor(x) 中的错误:找不到对象“TOTPRV”
【问题讨论】:
-
TOTPRV 是某物的名称(字符串,如变量名)还是实际对象?
-
它是数据框 mepsdsgn 中的列名
-
那么你应该在调用函数时将它作为字符串引用....这是问题之一,修复它。然后你可以在你的函数中将它称为
mepsdsgn[[x]] -
total_calc % group_by(YEAR) %>% summarise(tot =survey_total(mepsdsgn[[x]])) %>% select(YEAR, tot) } total_calc(mepsdsgn[[TOTPRV]]) ``` 和
total_calc <- function(x) {mepsdsgn %>% group_by(YEAR) %>% summarise(tot = survey_total(x)) %>% select(YEAR, tot)} total_calc(mepsdsgn[[TOTPRV]])仍然得到错误错误在 stop_for_factor(x) : object 'TOTPRV' not found -
medium.com/optima-blog/… 我认为这会解决问题,但包是 sryvr 而不是 dplyr