我正在尝试对具有 24 个级别(说话者)的因子应用 t 检验。我的目标是根据连续变量强度差异 (intdiff),查看正字法(2 个级别:jj 或 L)之间是否存在显着差异。但是,在使用 by() 函数时,它返回了以下错误:
Error in FUN(X[[1L]], ...) : could not find function "FUN"
我产生错误的语法是:
by(data, data$speaker, t.test(intdiff~orthography))
我根据 R 文档指定了参数,所以我不明白为什么它不接受我提供的函数。任何帮助将不胜感激。如果您需要尝试重现问题,这里是我正在使用的数据集:
https://www.dropbox.com/s/bxb9ebavln1rh3u/SpanishPalatals.csv
非常感谢。
最佳答案
这:t.test(intdiff~orthography)
不是函数。您似乎希望 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(它是一个函数“name”而不是一个函数“call”)并且有一个用于 t.test 的公式方法。与参数名称的匹配接受部分名称,因此传递给 `.test
的数据帧应该自动与“数据”参数匹配。
关于r - r : could not find function "FUN" 中的 by() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316778/