On Aug 8, 2012, at 3:19 AM, aleksandr russell wrote:

Hello,

I'm working with an array; I'm trying to make it so that an array of
dim(42,2,2) has names whose length corresponds to that of the array,
and am hoping someone with experience with this can see what I'm not
doing correctly:




data11 = array(0,c(41,2,2))

y = lsoda(x0,times,fhn$fn.ode,pars)#This is make.fhn() from colloc
infer package#

 y = y[,2:3]

data11<-array(0,c(41,2,2))


m8<-cbind(.29,1:41)
   m9<-as.array(m8,dim=c(41,2))

 data11[,1,] = y+m9
  data11[,2,] = y+m9

I didn't run that code since your difficulties did not seem to have anything to do with the values inside the array but only with the dimension labeling.

rownames(data2, do.NULL = FALSE, prefix="row")

What is 'data2'?

varnames=c("V","R")
colnames(data6)=c("one","two")

Ditto... what is 'data6'?

colnames(data10)=colnames(data6)
dimnames(data11)=list(rownames(data2),varnames,colnames(data10))
data11a<-as.array(data11,dimnames=dimnames(data11))
attributes(data11a)

#so this seems to print out the array attributes as they
should be:

For which object?

two sets of two columns each, and the first column of
each set is called 'v' and the second 'r'- no problem#

The data11 object had three dimenstions.


now the analysis from colloc infer(I've put it in below*)
takes this array but will not complete the analysis, saying

        "Error in `colnames<-`(`*tmp*`, value = c("V", "R")) :
 length of 'dimnames' [2] not equal to array extent"

Here's one way to label a 41 x 2 x 2 array:

> dimnames(data11)<- c(list(X=paste0("X",1:41)), list(Y=paste0("Y", 1:2)), list(Z=paste0("Z",1:2)) )
> attributes(data11)
$dim
[1] 41  2  2

$dimnames
$dimnames$X
[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10" "X11" "X12" "X13" "X14" "X15" "X16" "X17" "X18" "X19" [20] "X20" "X21" "X22" "X23" "X24" "X25" "X26" "X27" "X28" "X29" "X30" "X31" "X32" "X33" "X34" "X35" "X36" "X37" "X38"
[39] "X39" "X40" "X41"

$dimnames$Y
[1] "Y1" "Y2"

$dimnames$Z
[1] "Z1" "Z2"

When I type in

        length(dimnames(data11a)[2])

I get the answer:

        [1] 1

which seems odd when

        dimnames(data11a)[2]

gives

        [[1]]
        [1] "V" "R"

It is a one element list whose single element is a 2 element vector.


I would like to ask "How can I get the names of the second dimension
of the array(data11a) to have length "2" ?

It seems to me that the analysis will run if I can make this array
have the correct length dimnames

I thank you for your help.

____________


*
 fd.data11a = data11a
 DEfd11a = Data2fd(fd.data11a, times, bbasis,
 fdnames=list(NULL,NULL,varnames))


profile11a.obj=LS.setup(pars,DEfd11a $coefs,fhn,basisvals=bbasis,lambda,fd.obj=NULL, more =NULL,data=data11a,weights=NULL,times=times,quadrature=NULL,eps=1e-6,
 posproc=FALSE,poslik=FALSE,discrete=FALSE,names=NULL,sparse=FALSE)
lik = profile11a.obj$lik
proc = profile11a.obj$proc
qwts = rep(1/length(knots),length(knots))
 qwts = qwts %*% t(lambda)
 weights = array(1,dim(data11a))
 likmore = make.id()
 likmore$weights = weights
 lik = make.SSElik()
 lik$more = likmore
 lik$bvals = eval.basis(times,bbasis)
 procmore = make.fhn()
 procmore$weights = qwts
 procmore$qpts = qpts
 procmore$names = varnames
 procmore$parnames = parnames
 proc = make.SSEproc()
 proc$more = procmore
 proc$bvals = list(bvals = eval.basis(procmore$qpts,bbasis,0),
 dbvals = eval.basis(procmore$qpts,bbasis,1))
res11a = inneropt(coefs, times=times, data=data11a, lik=lik, proc=proc,
 pars=spars, in.meth='nlminb', control.in=control.out)


--
David Winsemius, MD
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to