我正在尝试计算事件发生的可能性。因此,这是一个分为两个阶段的过程:事件发生的概率以及每个事件持续多长时间
因此,我已经使用rbinom获得了事件发生多少次的10000次以上迭代的向量。然后,我想如果将其转换为数据框,则可以使用dplyr mutate将每个单独的行作为n参数传递给rgeom函数。但是我对每一行都得到相同的结果
年<-rbinom(10000,8760,0.0068)
平均(年)
year2 <-as.data.frame(year)
colnames(year2)[1] <-“测试”
year3 <-year2%>%变异(year = sum(rgeom(test,0.004)))
year3
我希望每一行的总和都不同,例如
测试年份
65 500
45411
就像您在mutate之外调用rgeom一样
答案 0 :(得分:0)
如果我正确理解了您的问题,那么问题在于您将年份设置为等于rgeom结果的总和。有10000个不同的结果,但只有一个总和。我相信这就是您想要的:
public void Stop(ProjectViewModel model)
{
ProjectManager manager = new ProjectManager();
if (model.Servers != null && model.Servers.Count != 0)
{
string machine = model.Servers[0];
foreach (string service in model.Services)
{
manager.StopService(service, machine);
model.events.Add(service, "stopped");
this.Session["Events"] = model.events;
}
}
//return View(model);
}
public void Message(ProjectViewModel model)
{
Thread.Sleep(1000);
Response.ContentType = "text/event-stream";
Response.CacheControl = "no-cache";
Response.AddHeader("connection", "keep-alive");
var events = this.Session["Events"] as Dictionary<string, string>;
Response.Write($"event: message\n");
if (events != null && events.Count != 0)
{
foreach (KeyValuePair<string, string> message in events)
{
Response.Write($"data: {message.Key} has been {message.Value}\n\n");
}
}
Response.Flush();
Thread.Sleep(1000);
Response.Close();
}
答案 1 :(得分:0)
问题在于,像sum()
和mutate()
这样的汇总函数可以有效地汇总数据中的各个组。由于您尚未应用任何分组,因此它将在整个数据帧中求和。
无论如何,我为您提供了两种解决方案。首先,使用map_int
包中的purrr
函数-该函数将函数迭代地应用于您指定的列的每个元素-在这种情况下,是“测试”列:
library(dplyr)
library(purrr)
set.seed(1)
year <-
data.frame(test = rbinom(10000, 8760, 0.0068))
set.seed(1)
year3 <-
year %>%
mutate(year = map_int(test, ~sum(rgeom(., 0.04))))
head(year3)
#> test year
#> 1 61 1369
#> 2 53 1430
#> 3 74 1568
#> 4 57 1483
#> 5 62 1294
#> 6 66 1619
或者,您可以使用rowwise()
中的dplyr
对数据帧进行分组,但是我要特别注意,因为它是tipped to be deprecated at some point:
set.seed(1)
year <-
data.frame(test = rbinom(10000, 8760, 0.0068))
set.seed(1)
year3 <-
year %>%
rowwise() %>%
mutate(year = sum(rgeom(test, 0.04))) %>%
ungroup()
head(year3)
#> # A tibble: 6 x 2
#> test year
#> <int> <int>
#> 1 61 1369
#> 2 53 1430
#> 3 74 1568
#> 4 57 1483
#> 5 62 1294
#> 6 66 1619