r中的by()错误:找不到函数;“乐趣”;
我正在尝试对一个24级因子(说话人)进行t检验。我的目标是根据连续变量强度差(intdiff),看看正字法(两个等级:jj或L)之间是否存在显著差异。但是,在使用by()函数时,它返回以下错误:r中的by()错误:找不到函数;“乐趣”;,r,statistics,R,Statistics,我正在尝试对一个24级因子(说话人)进行t检验。我的目标是根据连续变量强度差(intdiff),看看正字法(两个等级:jj或L)之间是否存在显著差异。但是,在使用by()函数时,它返回以下错误: Error in FUN(X[[1L]], ...) : could not find function "FUN" 产生错误的语法是: by(data, data$speaker, t.test(intdiff~orthography)) 我根据R文档指定了参数,所以我不明白为什么它不接受我提供
Error in FUN(X[[1L]], ...) : could not find function "FUN"
产生错误的语法是:
by(data, data$speaker, t.test(intdiff~orthography))
我根据R文档指定了参数,所以我不明白为什么它不接受我提供的函数。任何帮助都将不胜感激。如果您需要尝试重现问题,以下是我正在使用的数据集:
非常感谢。这:t.test(intdiff~正交法)
不是一个函数。您似乎希望by
拆分一个数据帧,这样可能会成功:
by(data, data$speaker, function(d){ t.test(d$intdiff ~ d$orthography, data=d)} )
进一步解释:function(d){t.test(d$intdiff~d$orthography)}
是一个函数。或者你可以试试:
by(data, data$speaker, t.test, form= intdiff ~ orthography ) # untested
第二个版本使用t.test(这是一个函数“名称”而不是函数“调用”),并且有一个用于t.test的公式方法。与参数名称的匹配接受部分名称,因此传递给`.test
的数据帧应自动与'data'参数匹配。如下:
ff <- function(spkr){
tt <- t.test(intdiff~orthography,data=df[df$speaker==spkr,])
p <- tt$p.value
return (c(as.character(spkr), p,
ifelse(p<0.01,"***",ifelse(p<0.05,"**",ifelse(p<0.1,"*","")))))
}
result <- sapply(unique(df$speaker),ff)
result <- data.frame(t(result))
colnames(result) <- c("speaker","p","")
请注意,其中一个扬声器只有一个正交法(speaker=f22s),这导致t.test失败,因此我将其删除。
by
正在查找函数名,而不是完整的函数,如by(data,factor,mean)
。我不打算下载一个300+KB的文件。您应该使用小文件进行测试,并在此类示例中使用post dput()。扬声器只有一个正交法
级别
f22s
@DWin抱歉!我认为这是一个相当小的文件大小。我会在以后的帖子中记住这一点。谢谢。@SvenHohenstein是的。我刚才看到了。但这并不难解决。谢谢,谢谢。这解决了我的问题,我学到了一些新东西apply
和by
的约定是,传递给目标函数的未命名对象“粘住”(匹配)第一个否则不匹配的参数。它们有一个“dots”参数,其中包含“其他参数”,这些参数通过名称匹配。目标的帮助页用法部分是正确使用apply/by/tapply“functionals”的必要阅读资料。Hadley Wickham在他的草稿文本中有一个关于这个编程范例的有用的“Functionals”部分。
> result
speaker p
1 f11r 0.274156477338993
2 f13r 0.713051221315941
3 f15a 0.572200487250118
4 f16a 0.192474372524439
5 f19s 0.071456754899202 *
6 f21s 0.172336984420981
7 f23s 0.00711798616059324 ***
8 f24s 0.875438396151962
9 f31s 0.0191665818354575 **
10 f35s 0.550666959777641
11 f36s 0.715870353562376
12 m09a 0.195488505334365
13 m10a 0.0083410071012031 ***
14 m12r 0.461148808729932
15 m14r 0.407116475315898
16 m17s 0.00147426201434577 ***
17 m18s 0.614243811131762
18 m20s 0.204627912633947
19 m25s 0.00652026971231048 ***
20 m26s 0.135705391035981
21 m27s 0.099118573524907 *
22 m28s 0.0789796806312655 *
23 m32s 0.27026239413494