-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
Of aleksandr shfets
Sent: Friday, August 17, 2012 6:25 AM
To: R. Michael Weylandt
Cc: r-help at r-project.org
Subject: Re: [R] dimnames in an array(I'll be grateful if this message will be passed to all
list users)
Michael,
Thank you for suggestions;
it seems to me that there's a fundamental lacuna with respect to names of a three
dimensional array:
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.
'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.
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.
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?
Otherwise R would be inconsistent with itself, like Nomad on Startrek, and I've never
seen a case where it was thus.
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?
regards,
A
Thu, 16 Aug 2012 00:00:35 -0400 ?? "R. Michael Weylandt"
<michael.weylandt at gmail.com>:
On Wed, Aug 15, 2012 at 3:57 AM, aleksandr shfets <a_shfets at 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?
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].
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
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
Also, some of the advice here will probably be helpful in seeking follow-up:
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 at gmail.com>:
On Mon, Aug 13, 2012 at 5:10 AM, aleksandr russell <sss736 at gmail.com> wrote:
I'm hoping someone with a wide experience with R may be able to see
what the program is trying to tell me.
data11<-array(0,c(41,2,2))
rownames(data11)<-rownames(data11, do.NULL = FALSE, prefix = "Obs.")
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)
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
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?