因此,对于我目前正在进行的数据评估,我想使用" for"来编写矩阵。环。
我们说我有0到100之间的随机数:
E <- runif(100, 0, 100)
t <- 0 #start
for(t in 0:90) {
D <- length(E[E >= t, E < (t + 10)])
t = t + 10
}
所以我想做的就是写&#34; D&#34;在每次迭代中使用&#34; t&#34;在一栏中&#34; D&#34;在另一个。
我听说你应该避免使用R中的循环,但我不知道另一种选择。
答案 0 :(得分:5)
不是使用循环,而是使用sapply
执行此操作,cbind
对序列中的每个项进行操作并将结果存储在向量中,然后E <- runif(100, 0, 100)
t <- seq(0, 90, 10)
D <- sapply(t, function(ti) {
sum(E >= ti & E < (ti + 10))
})
cbind(t, D)
#> t D
#> [1,] 0 11
#> [2,] 10 12
#> [3,] 20 14
#> [4,] 30 11
#> [5,] 40 9
#> [6,] 50 12
#> [7,] 60 7
#> [8,] 70 7
#> [9,] 80 6
#> [10,] 90 11
创建矩阵:
sum(E >= ti & E < (ti + 10))
请注意,我还使用length(length(E[E >= ti & E < (ti + 10)]))
而不是E
作为查找t
中大于t + 10
但小于public function chartLineAction()
{
$em = $this->getDoctrine()->getManager();
// $users is not the best name for this result
$users = $em->getRepository('MyAppEspritBundle:User')->findNbEmp();
// var_dump($users);
$tab = array();
$categories = array();
foreach ($users as $user) {
$tab[] = (int)$user['nbEmp']
}
// Chart
$series = array(
array("name" => "Nb employés", "data" => array($tab))
);
$ob = new Highchart();
$ob->chart->renderTo('linechart');
$ob->title->text('Nombre d employés par équipe');
$ob->xAxis->title(array('text' => "Equipe"));
$ob->yAxis->title(array('text' => "Nb Employés"));
// $ob->xAxis->categories($categories);
$ob->series($tab);
return $this->render('MyAppEspritBundle:Gerant:AccueilGerant.html.twig',
array(
'chart' => $ob
));
}
的项目数量的稍微短一些方式function findNbEmp()
{
$query = $this->getEntityManager()
->createQuery("Select COUNT(distinct u.id) AS nbEmp, u.id_equipe as id_equipe
FROM MyAppEspritBundle:User u
GROUP BY u.id_equipe");
return $query->getResult();
}
。
答案 1 :(得分:0)
您似乎希望将变量分类为类别 - 这正是cut所做的:
E <- runif(100, 0, 100)
table(cut(E, breaks = seq(0,100,10), right=FALSE))
#> [0,10) [10,20) [20,30) [30,40) [40,50) [50,60) [60,70) [70,80) [80,90)
#> 10 10 7 10 8 10 12 11 10
#>[90,100)
#> 12
如果您不想查看类别标签,请移除table
电话;如果你想在&#34;表格&#34;格式,将其包装在as.matrix
。
请注意,如果您是出于绘图目的而进行的,那么hist
和ggplot
都会自动为您执行此操作:
hist(E, breaks = seq(0,100,10))
library("ggplot2")
ggplot(data.frame(var=E), aes(x=var)) + geom_histogram(binwidth = 10)