|
|
hi,
i'm trying to figure out if there's any possibility to write a whole vector into a matrix or data.frame or something like that. i don't mean transormation. Here an example:
[,1] [,2]
[1,] "a" "d"
[2,] "b" "e"
[3,] "c" "f"
where e.g. a is a<-c(0,1) vector of length 2, b a vector of length 4,... (i know that the matrix enties are strings :)). i'm trying to put some variables into a matrix or data.frame, but i couldn't handle it. is something like that possible in R?
thanks for your help!
|
|
It is possible to put dimensionality on a list (i.e., a generic
vector), which might be what you're looking for.
x <- list(1:4, letters[1:4], function(x,y) x + y, rnorm(50))
dim(x) <- c(2,2)
x[[1,2]]
x[[2,2]]
x[[3,2]] # Error
Best,
Michael
On Thu, Jul 5, 2012 at 8:19 AM, Thomas C. < [hidden email]> wrote:
> hi,
>
> i'm trying to figure out if there's any possibility to write a whole vector
> into a matrix or data.frame or something like that. i don't mean
> transormation. Here an example:
>
> [,1] [,2]
> [1,] "a" "d"
> [2,] "b" "e"
> [3,] "c" "f"
>
>
> where e.g. a is a<-c(0,1) vector of length 2, b a vector of length 4,... (i
> know that the matrix enties are strings :)). i'm trying to put some
> variables into a matrix or data.frame, but i couldn't handle it. is
> something like that possible in R?
>
> thanks for your help!
>
> --
> View this message in context: http://r.789695.n4.nabble.com/vector-entry-in-matix-tp4635478.html> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] 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.
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|
well thank you, i think we get closer to my problem. but i meant it in a different way. maybe i describe what i intended to do:
i have number of triangles which i'd like to store in a list, matrix,...etc. i thought it could look sth. like that:
triangle node1 node2 node3 .....
1 c(x1,y1) c(x2,y3) c(x3,y3)
1 c(x4,y4) c(x5,y5) c(x6,y6)
.
.
.
i know that i could just make more rows for the x/y values but the problem is, that i need to store more than these properties (say the neighbours of these nodes and their coordinates) and i thought it would be more convenient to save these as vectors. it was just a thought... is this possible?
|
|
Hi,
I think it is better to store vectors in to list when the vectors are of different lengths.
#Consider these cases,
#vectors of equal length
set.seed(1)
list1<-list(a=rnorm(5,15),b=rnorm(5,25),c=1:5,d=runif(5,0.4),e=16:20,f=rep(1,5))
mat1<-cbind(rbind(list1[[1]],list1[[2]],list1[[3]]),(rbind(list1[[4]],list1[[5]],list1[[6]])))
mat1
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 16.43302 16.98040 14.63278 13.95587 15.56972 0.5371949 0.7574272
[2,] 24.86495 27.40162 24.96076 25.68974 25.02800 16.0000000 17.0000000
[3,] 1.00000 2.00000 3.00000 4.00000 5.00000 1.0000000 1.0000000
[,8] [,9] [,10]
[1,] 0.7449233 0.4462386 0.4213243
[2,] 18.0000000 19.0000000 20.0000000
[3,] 1.0000000 1.0000000 1.0000000
dat1<-data.frame(list1)
dat1
a b c d e f
1 16.43302 24.86495 1 0.5371949 16 1
2 16.98040 27.40162 2 0.7574272 17 1
3 14.63278 24.96076 3 0.7449233 18 1
4 13.95587 25.68974 4 0.4462386 19 1
5 15.56972 25.02800 5 0.4213243 20 1
#vectors of uneual length
#works with list
list2<-list(a=rnorm(5,15),b=rnorm(10,25),c=5:15,d=runif(3,0.4),e=1:5,f=rep(1:3,3))
> list2
$a
[1] 15.36594 15.24841 15.06529 15.01916 15.25734
$b
[1] 24.35099 24.88083 25.66414 26.10097 25.14377 24.88225 24.08793 23.56241
[9] 24.20291 26.25408
$c
[1] 5 6 7 8 9 10 11 12 13 14 15
$d
[1] 0.8679909 0.9283714 0.6478745
$e
[1] 1 2 3 4 5
$f
[1] 1 2 3 1 2 3 1 2 3
#Warning or Errors in matrix and dataframe
mat2<-cbind(rbind(list2[[1]],list2[[2]],list2[[3]]),(rbind(list2[[4]],list2[[5]],list2[[6]])))
Warning messages:
1: In rbind(list2[[1]], list2[[2]], list2[[3]]) :
number of columns of result is not a multiple of vector length (arg 1)
2: In rbind(list2[[4]], list2[[5]], list2[[6]]) :
number of columns of result is not a multiple of vector length (arg 2)
dat2<-data.frame(list2)
Error in data.frame(a = c(15.3659411230492, 15.2484126488726, 15.0652881816716, :
arguments imply differing number of rows: 5, 10, 11, 3, 9
#So, it would be better to store it as a list.
#But, you can still convert vectors of unequal lengths to data frame or matrix with NAs.
library(zoo)
a<-zoo(1:8,1:14)
b<-zoo(5:8,3:5)
c<-zoo(1:5,2:5)
list3<-list("a","b","c")
z<-zoo()
for(i in 1:length(list3)) z<-merge(z,get(list3[[i]]))
names(z)<-unlist(list3)
z
a b c
1 1 NA NA
2 2 NA 1
3 3 5 2
4 4 6 3
5 5 7 4
6 6 NA NA
7 7 NA NA
8 8 NA NA
9 1 NA NA
10 2 NA NA
11 3 NA NA
12 4 NA NA
13 5 NA NA
14 6 NA NA
z1<-data.frame(z)
is.data.frame(z1)
[1] TRUE
str(z1)
'data.frame': 14 obs. of 3 variables:
$ a: int 1 2 3 4 5 6 7 8 1 2 ...
$ b: int NA NA 5 6 7 NA NA NA NA NA ...
$ c: int NA 1 2 3 4 NA NA NA NA NA ...
z2<-as.matrix(z)
A.K.
----- Original Message -----
From: Thomas C. < [hidden email]>
To: [hidden email]
Cc:
Sent: Thursday, July 5, 2012 9:19 AM
Subject: [R] vector entry in matix
hi,
i'm trying to figure out if there's any possibility to write a whole vector
into a matrix or data.frame or something like that. i don't mean
transormation. Here an example:
[,1] [,2]
[1,] "a" "d"
[2,] "b" "e"
[3,] "c" "f"
where e.g. a is a<-c(0,1) vector of length 2, b a vector of length 4,... (i
know that the matrix enties are strings :)). i'm trying to put some
variables into a matrix or data.frame, but i couldn't handle it. is
something like that possible in R?
thanks for your help!
--
View this message in context: http://r.789695.n4.nabble.com/vector-entry-in-matix-tp4635478.htmlSent from the R help mailing list archive at Nabble.com.
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|
On Jul 5, 2012, at 11:22 AM, R. Michael Weylandt wrote:
> It is possible to put dimensionality on a list (i.e., a generic
> vector), which might be what you're looking for.
>
> x <- list(1:4, letters[1:4], function(x,y) x + y, rnorm(50))
> dim(x) <- c(2,2)
>
> x[[1,2]]
>
> x[[2,2]]
>
> x[[3,2]] # Error
That constructs a 2 x 2 matrix whose elements are lists:
> x
[,1] [,2]
[1,] Integer,4 ?
[2,] Character,4 Numeric,50
> is.matrix(x)
[1] TRUE
I suppose one could take that approach to constructing an Excel-mimic,
since the functional element survives that passage:
> x[1,2][[1]](3,4)
[1] 7
>
> Best,
> Michael
>
> On Thu, Jul 5, 2012 at 8:19 AM, Thomas C. < [hidden email]>
> wrote:
>> hi,
>>
>> i'm trying to figure out if there's any possibility to write a
>> whole vector
>> into a matrix or data.frame or something like that. i don't mean
>> transormation. Here an example:
>>
>> [,1] [,2]
>> [1,] "a" "d"
>> [2,] "b" "e"
>> [3,] "c" "f"
>>
>>
>> where e.g. a is a<-c(0,1) vector of length 2, b a vector of length
>> 4,... (i
>> know that the matrix enties are strings :)). i'm trying to put some
>> variables into a matrix or data.frame, but i couldn't handle it. is
>> something like that possible in R?
The matrix classes objects loose their names, however. You will not
have a,b, ... as handles in that matrix. You could create row and
column names.
>>
>> thanks for your help!
>>
David Winsemius, MD
West Hartford, CT
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|
You have failed to provide a complete, coherent description of what you
wish to do. In the absence of such a description, all suggestions are just
guesses. You need to think carefully about what information you want to
associate with each triangle and the appropriate data structure to use to
do this. You might do well to talk with a computer scientist about this. An
object-oriented framework seems like the natural approach. This also sounds
like the sort of thing Bioconductor might already have, so search around
there, perhaps posting on their Help list.
-- Bert
On Thu, Jul 5, 2012 at 9:37 AM, Thomas C. < [hidden email]> wrote:
> well thank you, i think we get closer to my problem. but i meant it in a
> different way. maybe i describe what i intended to do:
>
> i have number of triangles which i'd like to store in a list,
> matrix,...etc.
> i thought it could look sth. like that:
>
> triangle node1 node2 node3 .....
> 1 c(x1,y1) c(x2,y3) c(x3,y3)
> 1 c(x4,y4) c(x5,y5) c(x6,y6)
> .
> .
> .
>
> i know that i could just make more rows for the x/y values but the problem
> is, that i need to store more than these properties (say the neighbours of
> these nodes and their coordinates) and i thought it would be more
> convenient
> to save these as vectors. it was just a thought... is this possible?
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/vector-entry-in-matix-tp4635478p4635509.html> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] 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.
>
--
Bert Gunter
Genentech Nonclinical Biostatistics
Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm [[alternative HTML version deleted]]
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|
To second Bert Gunter: you may get better answers if you give us a complete
description.
On Thu, Jul 5, 2012 at 12:37 PM, Thomas C. < [hidden email]> wrote:
> i have number of triangles which i'd like to store in a list,
> matrix,...etc.
> i thought it could look sth. like that:
>
> triangle node1 node2 node3 .....
> 1 c(x1,y1) c(x2,y3) c(x3,y3)
> 1 c(x4,y4) c(x5,y5) c(x6,y6)
>
You already indicate that that's not the whole truth, but if it was you
could consider one of two approaches:
* Rather than a 2D array (also called "matrix") use a 3D array, with
dimensions n.triangle x 3 x 2.
* You could use a n.triangle x 3 matrix of complex numbers. That may look
like a sneaky trick to put a vector into a matrix element, but some
operations of planar geometry can written elegantly. E.g., distance
between a and b is abs(a-b).
It all depends on what you want to do. BTW, what do you consider a
neighbor of a triangle?
*
*
If you are working with a triangle mesh, it might be better to hold the
vertices in a double matrix (n.vertex x 2) and represent the triangles as
indices into it, i.e., as an integer matrix (n.triangle x 3). You may use
more columns in either matrix to represent more attributes. If you find
out you need columns of different types, consider a data frame.
/Christian
[[alternative HTML version deleted]]
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|
Hi Thomas,
This is non trivial to do, but if you will be working with this sort
of data and are inclined to do some programming, you might consider
creating a new class. S4 classes and methods are quite flexible, and
you can allow them to lean on or inherit from existing classes such as
matrices. For example, your class might consist of three lists and a
data frame. The length of each list would be forced to be equal to
the number of rows in the data frame. Each element of each list would
support a length 2 numeric vector (or integer vector or whatever it is
you need). THe lists then would hold nodes 1 - 3, and the data frame
would hold other information. You can similarly write methods so that
for your special class,
d[1, 1] would return c(x1, y1), essentially you create a mix of lists
and a matrix with all the necessary constraints, and you develop
methods that allow you to operate on this in a way that is sensible
for your data.
This is stab in the dark, but if you happen to be dealing with social
network style data, (triangles and neighbors make me think of that),
you should investigate existing packages for that as they may already
have their own classes/have a way they expect data to be structured.
Off the top of my head, the package "sna" comes to mind as a starting
place to look (though I am not personally very familiar with it).
Cheers,
Josh
On Thu, Jul 5, 2012 at 9:37 AM, Thomas C. < [hidden email]> wrote:
> well thank you, i think we get closer to my problem. but i meant it in a
> different way. maybe i describe what i intended to do:
>
> i have number of triangles which i'd like to store in a list, matrix,...etc.
> i thought it could look sth. like that:
>
> triangle node1 node2 node3 .....
> 1 c(x1,y1) c(x2,y3) c(x3,y3)
> 1 c(x4,y4) c(x5,y5) c(x6,y6)
> .
> .
> .
>
> i know that i could just make more rows for the x/y values but the problem
> is, that i need to store more than these properties (say the neighbours of
> these nodes and their coordinates) and i thought it would be more convenient
> to save these as vectors. it was just a thought... is this possible?
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/vector-entry-in-matix-tp4635478p4635509.html> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] 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.
--
Joshua Wiley
Ph.D. Student, Health Psychology
Programmer Analyst II, Statistical Consulting Group
University of California, Los Angeles
https://joshuawiley.com/______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
|
|