- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一个函数 (weight.func) 传递给另一个调用 ddply 的函数(包装器)。我希望 ddply 使用该函数 (weight.func) 作为其计算的一部分。当 weight.func 设置为“全局”时,我得到了我想要的输出,但当它作为匿名函数传递给包装器时却没有。
我可以让 ddply 做我想做的事吗?这是一个代码示例:
> print(sampleData)
studentId problem part workerId rating
1 8001 problem26 partA A127R5QI5OGBIK 0.0
2 8001 problem26 partA A1FCLYRBAB430F 0.0
3 8001 problem26 partA A25FZQY34C6RVO 0.0
4 8001 problem26 partA A3G0MO562MHMZ3 0.5
5 8001 problem26 partA A3RB9ZOIUC3NWG 2.0
6 8001 problem26 partB A1FCLYRBAB430F 0.5
7 8001 problem26 partB A1XRDZKSJBWY8Q 0.5
8 8001 problem26 partB A22CRWMZUX7FFR 0.5
9 8001 problem26 partB A25FZQY34C6RVO 1.0
10 8001 problem26 partB A3G0MO562MHMZ3 0.5
11 8001 problem27 partA A1ET309DW6M2XA 2.0
12 8001 problem27 partA A1FCLYRBAB430F 0.0
13 8001 problem27 partA A22CRWMZUX7FFR 0.0
14 8001 problem27 partA A25FZQY34C6RVO 0.0
15 8001 problem27 partA A3G0MO562MHMZ3 0.0
16 8001 problem27 partB A1FCLYRBAB430F 1.0
17 8001 problem27 partB A22CRWMZUX7FFR 0.0
18 8001 problem27 partB A25FZQY34C6RVO 0.0
19 8001 problem27 partB A2U9676210WST5 0.0
20 8001 problem27 partB A3G0MO562MHMZ3 0.0
21 8002 problem26 partA A127R5QI5OGBIK 0.0
22 8002 problem26 partA A1FCLYRBAB430F 0.5
23 8002 problem26 partA A22CRWMZUX7FFR 0.0
24 8002 problem26 partA A25FZQY34C6RVO 2.0
25 8002 problem26 partA A3G0MO562MHMZ3 0.5
26 8002 problem26 partB A17EHJZNJGNRAN 2.0
27 8002 problem26 partB A1FCLYRBAB430F 0.0
28 8002 problem26 partB A2IPRDTE6B4TAB 0.0
29 8002 problem26 partB A3G0MO562MHMZ3 0.0
30 8002 problem26 partB A6SON3OS15XKA 0.0
31 8002 problem27 partA A1FCLYRBAB430F 0.0
32 8002 problem27 partA A25FZQY34C6RVO 0.0
33 8002 problem27 partA A2IPRDTE6B4TAB 0.0
34 8002 problem27 partA A2U9676210WST5 0.0
35 8002 problem27 partA A3G0MO562MHMZ3 0.0
36 8002 problem27 partB A1FCLYRBAB430F 0.0
37 8002 problem27 partB A1V52SSKROBV8E 2.0
38 8002 problem27 partB A25FZQY34C6RVO 2.0
39 8002 problem27 partB A2IPRDTE6B4TAB 0.0
40 8002 problem27 partB A3G0MO562MHMZ3 0.0
>
> #Make a wrapper
> wrapper <- function ( ratingData, weight.func ) {
+ print(weight.func) #prove that the function is being passed
+ ddply(ratingData, c('studentId','problem','part'), summarize,
+ sum.weights = sum ( weight.func(rating) ))
+ }
> wrapper( sampleData, weight.func=function(x) (x+.001)^-1 )
function(x) (x+.001)^-1
Error in data.frame(sum.weights = sum(weight.func(rating))) :
could not find function "weight.func"
>
> #'globally' declare weight.func
> weight.func <- function(x) (x+.001)^-1
> wrapper( sampleData, weight.func=NULL )
NULL
studentId problem part sum.weights
1 8001 problem26 partA 3002.495758
2 8001 problem26 partB 8.983033
3 8001 problem27 partA 4000.499750
4 8001 problem27 partB 4000.999001
5 8002 problem26 partA 2004.491766
6 8002 problem26 partB 4000.499750
7 8002 problem27 partA 5000.000000
8 8002 problem27 partB 3000.999500
第二个输出是目标。任何帮助表示赞赏! (包括完成相同任务的非基于 plyr 的方法。)
上面的例子是一个玩具例子。这是我可以重现该行为的最简单的情况。
最佳答案
你可以使用聚合:
w2 <- function(d, f){
aggregate(rating~studentId+problem+part, function(x)sum(f(x)), data=d)
}
w2( sampleData, function(x) (x+.001)^-1 )
请注意,聚合列的名称是自动确定的,因此如果您要命名,则需要自己命名。
你可以通过 ddply 做同样的事情而不用总结
wrapper <- function ( ratingData, weight.func ) {
ddply(ratingData, c('studentId','problem','part'), function(x)c(sum.weights=sum(weight.func(x$rating))))
}
wrapper( sampleData, weight.func=function(x) (x+.001)^-1 )
在这种情况下,您可以在函数内指定名称。
关于r - plyr summarize 只调用全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289602/
我目前正在重复很多代码,因为我需要 summarize对于不同的组总是相同的列。我如何通过编写 summarize 来有效地做到这一点函数(始终相同)仅一次,但定义输出名称和 group_by逐案论证
我正在尝试将一个函数 (weight.func) 传递给另一个调用 ddply 的函数(包装器)。我希望 ddply 使用该函数 (weight.func) 作为其计算的一部分。当 weight.fu
我想编写一个函数,根据一些指定的标准(在本例中是按年龄)汇总提供的数据 示例数据是用户年龄及其统计数据的表格。 df % .[, colnames(.) %in% output_columns] %>
我正在尝试根据客户的满意度来获取投票记录的数量。例如: 20 条记录投票支持 5/10 10 条记录投票支持 2/10 5 条记录投票支持 9/10 这是我的数据集的一部分: 我想要每个 Opp ti
我在玩弄babynames包。一个 group_by命令有效,但在 summarize 之后,其中一个组从组列表中删除。 library(babynames) babynames[1:10000, ]
我有一些像这样的数据(简化): sales: [ { 'quantity': 20, 'amount': 40, 'product': {
假设您输入了 Array=[1,2,3,5,7,9,10,11,12,15] 输出应该是1-3,5,7,9-12,15 我正在寻找有关我的尝试和其他可能解决方案的反馈。这是我在 javascript
是否可以在 dplyr::summarize() 的不同部分运行条件语句? 想象一下,我正在使用 iris数据并输出摘要,我只想在请求时包含 Sepal.Length 的平均值。所以我可以做这样的事情
我有这两个查询: EVALUATE FILTER ( SUMMARIZE ( 'Sales', Products[ProductName], '
我有一个看起来像这样的数据框(我有更多的年份和变量): Name State2014 State2015 State2016 Tuition2014 Tuition2015 T
在 tidyverse 中,summarize 可用于具有单值函数的分组数据。例如 mtcars %>% group_by(cyl) %>% summarise(max(cos(mpg))) 如果函数
我试图将与条件匹配的 data.frame 中的所有列传递给 dplyr 的汇总函数中的函数,如下所示: df %>% group_by(Version, Type) %>% summarize(
df_input是输入文件,理想的输出文件是df_output。 df_input % dplyr::group_by_at(.vars = vars(id)) %>% {left_join(
每当我使用 svn diff --summarize 我得到类似的东西: A *mylinkhere* M *mylinghere* 这些开头字母(例如 A、M)的用途是什
我是 dplyr 的新手,尝试进行以下转换,但没有任何运气。我在互联网上进行了搜索,找到了在 ddply 中执行相同操作的示例,但我想使用 dplyr。 我有以下数据: month type
我正在尝试在 R 中编写一个函数来汇总表格。以下是一个示例函数,我正在使用 Iris 数据作为测试。 test_func % group_by(data[[by_var_nm]]) %>%
因为我不想为每个子页面创建一个新的 ajax 文件,所以我想总结所有对 CREATE、UPDATE 和 DELETE 的 ajax 请求。 因此,我将所有输入和选择命名为“input_”和“selec
我安装了 Strawberry Perl 以在 Windows 中运行 rouge 程序。但是当我想运行我的程序时,我收到一条错误消息,您可以在图像上看到: The system can't find
我想在数据库中创建一个id id_user => data type 'varchar' 我希望我的 id 从 00、01、02 等开始。为了制作新的 id,我计算了所有的行,计数的结果将加上 01。
我目前正在构建一个系统,它将总结来自维基百科等网页的文章。 我可以从网页中提取文本,而且我知道 Open Text Summarizer API 可以帮助我进行摘要,但问题是我不知道如何正确使用它。
我是一名优秀的程序员,十分优秀!