我正在努力帮助我的女朋友完成R课程的任务。 我不太了解代码,我知道C ++,但R我不知道。
我正在阅读文档,但如果你能帮助我,那就太棒了!
以下代码来自this网站。
代码的第一部分:
# rm(list=ls(all=TRUE))
# It's discourteous to wipe out your responder's entire workspace
install.packages("abind")
library(abind)
simHPP<-function(lambda,T,N){
# lambda: scalar, intensity of the Poisson process
# T: scalar, time horizon
# N: scalar, number of trajectories
EN <- rpois(N,lambda*T)
y <- matrix(T,nrow=2*max(EN)+2,ncol=N)*matrix(1,nrow=2*max(EN)+2,ncol=N)
yy <- abind(y,matrix(1,nrow=2*max(EN)+2,ncol=N)*EN,along=3)
i=1
while(i<=N){
if(EN[i]>0){
yy[1:(2*EN[i]+1),i,1] <- c(0,rep(sort(T*runif(EN[i])),each=2))
} else {
yy[1,i,1]=0
}
yy[1:(2*EN[i]+2),i,2] <- c(0,floor((1:(2*EN[i]))/2),EN[i])
i=i+1
}
return(yy)
}
函数abind
,它是如何工作的? R中赋值(=)的运算符看起来像(&lt ;-)?
而且,例如,这是做什么的?
yy[1:(2*EN[i]+1),i,1] <- c(0,rep(sort(T*runif(EN[i])),each=2))
答案 0 :(得分:1)
有一个代码审查网站,这可能是合适的,因为您要求(部分)解释您没有给出上下文的代码。
(由于对该名称的默认赋值是逻辑TRUE,因此使用大写字母T作为矢量名称会造成混淆,尽管不是错误。)
abind
将数组作为参数并返回增强数组。如果您有两个2 x 2 x 2阵列并且abind
则得到一个2 x 2 x 4阵列
abind( array(1:8, c(2,2,2) ), array (9:16, c(2,2,2)))
#------------
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
, , 4
[,1] [,2]
[1,] 13 15
[2,] 14 16