我正在尝试编写一个“变量化” ddply 调用的函数:
december <- ddply(adk47, .(PeakName, Elevation), summarize,
needThese=if(sum(dec) == 0) "needThis"
else character(0), .progress='text')
df 中每个月有 3 个字母的列名。我正在尝试将函数编写为:
need.fr.month <- function(df, monthCol) {
needThese <- ddply(df, .(PeakName, Elevation),
summarize,
needThese=if(sum(monthCol) == 0)
"needThis" else character(0)
)
return(needThese)
}
但是当我用
need.fr.month(adk47, oct)
或与
need.fr.month(adk47, "oct")
我收到这些错误消息:
eval 中的错误(expr,envir,enclos):找不到对象“monthCol”
或者
sum("monthCol") 中的错误:参数的“类型”(字符)无效
我知道我没有得到一些非常基本的东西,但我不知道是什么。
我正在使用这个 DF 来练习编写 R 函数。我的其他功能进展顺利;但是,这是我尝试对 df 列进行可变化的第一个函数。
帮助将不胜感激。
这是数据子集的可重现示例
PeakName Elevation jul aug sep oct nov dec
Algonquin 5114 0 0 1 0 0 0
Algonquin 5114 0 0 0 0 0 0
Algonquin 5114 0 0 0 1 0 0
Algonquin 5114 1 0 0 0 0 0
Allen 4340 0 0 0 0 0 0
Allen 4340 0 0 0 0 0 0
Allen 4340 0 0 1 0 0 0
Allen 4340 1 0 0 0 0 0
Allen 4340 0 0 0 0 1 0
Armstrong 4400 0 0 0 0 0 0
Armstrong 4400 0 0 0 0 0 0
Armstrong 4400 0 0 0 0 0 0
Armstrong 4400 0 0 0 0 0 0
Armstrong 4400 0 0 0 0 1 0
Armstrong 4400 0 0 0 0 0 0
Armstrong 4400 0 0 0 1 0 0
Basin 4827 1 0 0 0 0 0
Basin 4827 0 0 0 0 0 0
Basin 4827 0 0 0 0 0 0
Basin 4827 0 0 0 0 0 0
Basin 4827 0 0 0 0 0 0
Basin 4827 0 0 0 0 0 0
Basin 4827 0 0 0 0 1 0
Big.Slide 4240 0 0 0 0 0 0
Big.Slide 4240 0 0 0 1 0 0
Big.Slide 4240 0 0 0 0 0 0
Big.Slide 4240 0 0 1 0 0 0
Big.Slide 4240 0 0 0 0 0 0
Big.Slide 4240 0 0 0 0 0 0
Big.Slide 4240 0 0 0 0 0 0
Big.Slide 4240 1 0 0 0 0 0
我希望这就足够了。显然,这是数据的一个子集。形式是,每次“远足”都有一行月份列(此处截断为 7 月至 12 月),表示一个月为“1”,其他 11 个月为 0。
谢谢
韦恩