ddply的旧代码不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ddply的旧代码不起作用相关的知识,希望对你有一定的参考价值。
我有一些代码来自使用R(2012)的行为科学纵向数据分析这本书不起作用。
这就是数据的样子:
subid risk gen eth ell sped att ell2 risk2 grade read
1 HHM F Afr 0 N 0.94 No DADV 5 172
1 HHM F Afr 0 N 0.94 No DADV 6 185
1 HHM F Afr 0 N 0.94 No DADV 7 179
1 HHM F Afr 0 N 0.94 No DADV 8 194
2 HHM F Afr 0 N 0.91 No DADV 5 200
2 HHM F Afr 0 N 0.91 No DADV 6 210
代码如下所示:
ddply(.data = data.frame(MPLS.LS$read), .variables = .(grade = MPLS.LS$grade),
each(read.mean = mean), na.rm = FALSE)
假设在5级,6级,7级和8级给我read
的平均值。但是我收到此错误消息:
Warning messages:
1: In mean.default(x, ...) :
argument is not numeric or logical: returning NA
2: In mean.default(x, ...) :
argument is not numeric or logical: returning NA
3: In mean.default(x, ...) :
argument is not numeric or logical: returning NA
4: In mean.default(x, ...) :
argument is not numeric or logical: returning NA
我的问题是为什么我收到这条消息?我可以更改代码中的某些内容以获得我想要的结果吗?
任何帮助都会非常感激,因为书中有很多代码对我不起作用。
答案
将我的评论改为答案:
ddply
可以将您的完整数据框作为数据参数,然后您无需重新指定数据:
ddply(.data = MPLS.LS,.variables =。(grade),summarize,read.mean = mean(read,na.rm = FALSE))
当您想要在一列上调用多个函数中的每一个时,通常使用each()
。由于你有一个功能,你最好使用summarize
。
ddply
或多或少被dplyr
包裹所取代。我建议从他们当前的文档中学习这些软件包,而不是从可能过时的教科书中学习。 dplyr
有quite a few vignettes,在介绍功能方面做得很好。与此操作相当的dplyr
是
library(dplyr)
group_by(MPLS.LS, grade) %>%
summarize(read.mean = mean(read, na.rm = FALSE))
dplyr
是现代和时尚 - 我非常喜欢它 - 但没有什么是永恒的。
以上是关于ddply的旧代码不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 viewBinding 时 SetTheme 不起作用
SetBkMode(hdc, TRANSPARENT) 不起作用