

On Aug 17, 2012, at 9:25 AM, aleksandr shfets <a_shfets@mail.ru> wrote:

> 
> Michael,
> Thank you for suggestions; 
> it seems to me that there's a fundamental lacuna with respect to names of a three dimensional array:

A lacuna in the English language, not in R: though perhaps Prof Ripley's employer's dictionary's editors could help us out ;-) 

[that might be the closest I've ever gotten to chained pointers in a natural language]

> that is, rownames fits dimension 1, colnames fits another dimension(that is, 3, if I read it correctly),
> but there is no specific name for the third dimension. I've tried "setnames" thinking that this would be appropriate 
> for naming the sets, but there is no such R function.
> 
> On the other hand you're right, the suggestion
>              dimnames(data11a)[[2]]=c("V","R")
> 
> doesn't ameliorate the analysis: while now dimnames(data11a)[[2]]
> 
> comes out as 
> [2]
> 
> returning to the original analysis the same error comes up, that is, that the length of dimnames[2] doesn't agree with thee.

I don't believe I made any prescriptions about length(dimnames[2]) so I have no idea what you mean here about it not agreeing with me.

Also, there's almost no chance that's valid syntax: it should throw a 'closure not subsettable' error unless you over-wrote the name of a very important function (which you should not do).

 And I believe I told you that you want double brackets here. 

> 'array extent' -- that is, even though the boxcar contents are two in number, it evaluates the analysis on the basis of the 
> dimnames(data11a)[2] value.

No! Double brackets. 

> 
> I'm using colloc infer (available under R 2.14) and trying to do the FHN(FitzHugh Nagumo) analysis in section 9.1 of the manual; it's very complex work, but I doubt the program is in error.

I'm travelling currently so I can't track this down (no wifi) but I'll try later. In the meanwhile, see Bill Dunlap's suggestions. 

> 
> It seems to me in any case that, if R demands that the length of 'dimnames[2] must be equal to the array extent, then there must be a way to make the length of the names equal to the extent of the array, am I right?

Again -- your code ("dimnames[2]") looks like nonsense -- I think you've overwritten a function that you shouldn't have. 

> Otherwise R would be inconsistent with itself, like Nomad on Startrek, and I've never seen a case where it was thus.

Really? Never thought about the S3 naming conventions then....

> 
> This is again why I ask if others with extensive experience with dimnames of an array have seen anything similar.
> Certainly someone might know what is the significance of the dimnames of the array, how much can the length of them be altered for use generally?

Dimnames must have lengths which correspond to the dimensions of the underlying array -- that is 

dim(a) == sapply(dimnames(a) length)

Nothing else really makes sense. The only way to change the lengths of the dimnames is to reshape the array. 

Michael

> 
> regards,
> A
> Thu, 16 Aug 2012 00:00:35 -0400 от "R. Michael Weylandt" <michael.weylandt@gmail.com>:
> On Wed, Aug 15, 2012 at 3:57 AM, aleksandr shfets <a_shfets@mail.ru> wrote:
> > Hi Michael,
> > Thanks for help on double brackets: I wasn't aware of this use of them.
> >
> > I went back to readjust my array so the dimnames(data11a)[[2]] would have
> > two elements, and remade the array to include the new dimnames:
> >
> > dimnames(data11a)[[2]]=c("V","R")
> >
> > so that inside the second car of the train would
> > be two items?
> 
> Yes.
> 
> >
> > There seems to be no way to define dimnames(data11a)[2] to be two elements
> > rather than one[as you say we have no way to combine the elements of the
> > train except using the train].
> 
> You could do this:
> 
> dimnames(data11a)[2] <- list(c("V","R"))
> 
> but I'm not sure that's any clearer. To keep the metaphor rolling (get
> it!), list() puts your stuff in a boxcar so now you can put it
> directly on the train.
> 
> > So having tried to do what I can to make the
> > middle element of the list to two rather than one, I rerun the analysis with
> > the same result.
> >
> > if I read the thing right, regardless of how I define the "inside" of the
> > boxcar, the analysis that I referred to
> >
> > res11a = inneropt(coefs, times=times, data=data11a,
> > lik=lik,
> > proc=proc, pars=spars, in.meth='nlminb',
> > control.in=control.out)
> >
> 
> Where is this inneropt function from? It could be an error in that. If
> it's from a package, give me the name and I'll take a look at it and
> you can also contact the maintainer: get contact info using the
> maintainer() function.
> 
> Also, some of the advice here will probably be helpful in seeking follow-up:
> 
> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
> 
> Cheers,
> Michael
> 
> > still won't look at the 'contents' of the car, but gives the same message:
> >
> > Error in `colnames<-`(`*tmp*`, value = c("V", "R")) :
> > length of 'dimnames' [2] not equal to array extent
> >
> >
> > I've tried a couple of other things like, after defining the second boxcar
> > as:
> >
> > dimnames(data11a)[[2]]=c("V","R")
> >
> >
> > then
> >
> >
> > dimnames(data11a)[2]=list(dimnames(data11a)[[2]])
> >
> >
> > but this last generates an error.
> >
> > Somehow I think that that the clue to the thing is in the error message:
> > what I see[ with my untrained eye] is that there should be some way to
> > reconcile the three-- colnames, dimnames and the array- to a greater degree
> > than their present agreement.
> > Am I right?
> > regards,
> > Russell
> >
> > Tue, 14 Aug 2012 01:27:50 -0400 от "R. Michael Weylandt"
> > <michael.weylandt@gmail.com>:
> >
> > On Mon, Aug 13, 2012 at 5:10 AM, aleksandr russell <sss736@gmail.com> wrote:
> >> Hello,
> >>
> >> I'm hoping someone with a wide experience with R may be able to see
> >> what the program is trying to tell me.
> >>
> >> I've got an array:
> >>
> >> y1=rnorm(41,0.2)
> >> y2=rnorm(41,0.2)
> >> y3=rbind(y1,y2)
> >>
> >>
> >>
> >> data11<-array(0,c(41,2,2))
> >> data11[,1,]=y3
> >> data11[,2,]=y3
> >> rownames(data11)<-rownames(data11, do.NULL = FALSE, prefix = "Obs.")
> >> colnames=c("V","R")
> >> varnames=c("one","two")
> >> dimnames(data11)<-list(rownames(data11), varnames, colnames)
> >>
> >>
> >>
> >> data11a<-as.array(data11, dimnames=dimnames(data11))
> >
> > # No effect here
> > identical(data11, data11a) # TRUE
> >
> >>
> >> The analysis that I would like to do with R(CollocInfer) runs as
> >> follows(I print for the sake of introduction here though to run this
> >> line of code requires extensive setup)
> >>
> >> res11a = inneropt(coefs, times=times, data=data11a, lik=lik,
> >> proc=proc, pars=spars, in.meth='nlminb', control.in=control.out)
> >>
> >>
> >>
> >> The response I get is
> >>
> >> Error in 'colnames<-'('*tmp*', value = c("V","R")) :
> >> length of 'dimnames' [2] not equal to array extent
> >>
> >>
> >>
> >> It seems to me that there is a fundamental match of 'dimnames' with
> >> the array that is being referred to.
> >>
> >> I have learned that the normal length of dimnames for an array is one
> >> for each element in the list: thus as I've set up the array, the
> >> length(dimnames(data11a)[2]) gives me
> >>
> >> [1]
> >
> > I believe you are looking for
> >
> > length(dimnames(data11a)[[2]]) # 2
> >
> > Look into the difference between `[` and `[[` for subsetting a list.
> > See ?Extract for the gorey details, but I like my little train
> > metaphor:
> >
> > If the list "x", is a train: x[2] is the "sub-train" consisting only
> > of the second car, while x[[2]] is the contents of that second car.
> > Hence we can do x[1:3] to give a well defined train, but not x[[1:3]]
> > because we have no way to combine the elements of the first three cars
> > other than using a train.
> >
> > Cheers,
> > Michael
> >
> >>
> >> I would like to ask :Is it not evident from R's response that there is
> >> some other possibility for the dimnames[2] of the array?
> >>
> >> If so, what is it?
> >>
> >> regards,
> >> A
> >>
> >> ______________________________________________
> >> 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.
> >
> >
> 

	[[alternative HTML version deleted]]


