An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20060223/76e075c5/attachment.pl
importing data from BUGS format to R?
4 messages · Jeffrey Moore, Gabor Grothendieck, Uwe Ligges +1 more
Just source the file:
source("mywinbugsfile.R")
head(y)
On 2/23/06, Jeffrey Moore <jemoore at duke.edu> wrote:
For those who use WinBUGS (or for those who are just familar with this
format), I have a text file that looks like this (which is how R would
export data if you used the "structure" function):
y= structure(.Data= c(-6.93310E+01, 4.32870E+01, -6.96600E+01, 4.35730E+01,
-6.90150E+01, 4.35870E+01, -5.81060E+01, 4.52890E+01, -6.65590E+01,
4.34600E+01, -6.61850E+01, 4.35000E+01, -6.54130E+01, 4.31940E+01,
-6.42790E+01, 4.34780E+01, -6.35520E+01, 4.38070E+01, -6.32980E+01,
4.39520E+01, -6.25690E+01, 4.41760E+01, -6.20810E+01, 4.40800E+01,
-6.14280E+01, 4.46210E+01, -6.10530E+01, 4.48050E+01, -6.00300E+01,
4.50480E+01, -5.88110E+01, 4.50280E+01, -5.83660E+01, 4.50400E+01,
-5.83140E+01, 4.48780E+01, -5.87330E+01, 4.50340E+01, -5.87430E+01,
4.51630E+01, -5.88170E+01, 4.54030E+01, -5.89380E+01, 4.53260E+01,
-5.89110E+01, 4.55260E+01, NA, NA, -5.91250E+01, 4.56070E+01,
-5.90140E+01, 4.59690E+01, -5.89830E+01, 4.64640E+01, -5.89240E+01,
4.66300E+01, -5.93770E+01, 4.66810E+01, -5.90010E+01, 4.65640E+01,
-5.91230E+01, 4.67780E+01, -5.92350E+01, 4.70000E+01, -5.92310E+01,
4.68350E+01, NA, NA, -5.88530E+01, 4.68560E+01, NA, NA,
NA, NA, NA, NA, -5.83550E+01, 4.65300E+01, -5.83270E+01,
4.64970E+01, -5.86210E+01, 4.65320E+01, NA, NA, -5.82720E+01,
4.65060E+01, -5.81480E+01, 4.64490E+01, -5.83350E+01, 4.63650E+01, NA,
NA, -5.84800E+01, 4.63340E+01, -5.83980E+01, 4.63040E+01, -5.83390E+01,
4.62030E+01, -5.82170E+01, 4.62620E+01, NA, NA, -5.80420E+01,
4.61940E+01, -5.80360E+01, 4.57280E+01, -5.80590E+01, 4.55420E+01,
-5.83010E+01, 4.54730E+01, -5.83710E+01, 4.55010E+01, -5.86540E+01,
4.52870E+01, -5.87020E+01, 4.51740E+01, -5.87400E+01, 4.52620E+01,
-5.88330E+01, 4.53190E+01, -5.89740E+01, 4.53410E+01, NA, NA,
-5.85240E+01, 4.54970E+01, -5.81710E+01, 4.56200E+01, -5.79070E+01,
4.58370E+01, NA, NA, -5.73610E+01, 4.62660E+01, -5.71820E+01,
4.60770E+01, -5.70540E+01, 4.59920E+01, NA, NA, NA, NA,
-5.58460E+01, 4.51830E+01, -5.53690E+01, 4.52890E+01, -5.49260E+01,
4.53340E+01, -5.40070E+01, 4.53670E+01, -5.35510E+01, 4.54510E+01, NA,
NA, -5.15130E+01, 4.63060E+01, -5.15000E+01, 4.63280E+01, -5.08410E+01,
4.67780E+01, -4.99400E+01, 4.69670E+01, -4.88440E+01, 4.72810E+01,
-4.87250E+01, 4.76880E+01, -4.70460E+01, 4.87420E+01, -5.17870E+01,
4.83990E+01, -4.68830E+01, 4.97030E+01, -4.73700E+01, 5.03350E+01,
-4.75990E+01, 5.10690E+01, -5.15050E+01, 5.05110E+01, -4.80640E+01,
5.19200E+01, -4.83890E+01, 5.27580E+01, NA, NA, -4.85200E+01,
5.41250E+01, -4.87630E+01, 5.53650E+01, NA, NA, -4.84790E+01,
5.70560E+01, -4.82690E+01, 5.77990E+01, -4.77870E+01, 5.87570E+01,
-4.74070E+01, 5.96700E+01, -4.76990E+01, 6.02020E+01, -4.82110E+01,
6.03410E+01, -4.90240E+01, 6.05510E+01, -4.89050E+01, 6.06780E+01,
-4.80660E+01, 6.05380E+01, -4.61030E+01, 6.01290E+01, NA, NA,
-4.59880E+01, 6.02070E+01, -4.55240E+01, 5.99680E+01, -4.59540E+01,
5.97650E+01, -4.58830E+01, 5.98200E+01, -4.64730E+01, 6.00690E+01,
-4.64660E+01, 6.00730E+01, -4.59630E+01, 5.99330E+01, -4.63940E+01,
6.01380E+01, -4.64370E+01, 6.02270E+01, -4.67750E+01, 6.04410E+01,
-4.68020E+01, 6.04700E+01, -4.57440E+01, 5.97720E+01, -4.48480E+01,
5.96590E+01, -4.50540E+01, 5.97830E+01), .Dim=c(120, 2))
I would like to read this into R as an 120x2 array (matrix or data frame).
How would I do so?
I know I can just copy/paste all the values bound by c( ), and then just do
something like this:
y <- matrix(c(pasted values), nrow=120, ncol = 2)
But, I get errors messages when I try to copy/paste the whole dataset
because I reach line limits in the R console, such that certain values get
split, and then R doesn't know what to do with something like "0E+01, -".
So, I can instead try to copy/paste in a piecemeal fashion (which I've done,
and it works fine), but I'm sure there's a better way.
Thanks
Jeff
******************************************
Jeffrey Moore, Ph.D.
Postdoctoral Research Scientist
Duke Center for Marine Conservation
Duke University Marine Laboratory
135 Duke Marine Lab Road
Beaufort, NC 28516
Phone: (252) 504-7653
Fax: (252) 504-7689
Email: jemoore at duke.edu
*****************************************
[[alternative HTML version deleted]]
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Gabor Grothendieck wrote:
Just source the file:
source("mywinbugsfile.R")
head(y)
... and don't forget to transpose the matrix afterwards, if this was BUGS code. Uwe Ligges
On 2/23/06, Jeffrey Moore <jemoore at duke.edu> wrote:
For those who use WinBUGS (or for those who are just familar with this
format), I have a text file that looks like this (which is how R would
export data if you used the "structure" function):
y= structure(.Data= c(-6.93310E+01, 4.32870E+01, -6.96600E+01, 4.35730E+01,
-6.90150E+01, 4.35870E+01, -5.81060E+01, 4.52890E+01, -6.65590E+01,
4.34600E+01, -6.61850E+01, 4.35000E+01, -6.54130E+01, 4.31940E+01,
-6.42790E+01, 4.34780E+01, -6.35520E+01, 4.38070E+01, -6.32980E+01,
4.39520E+01, -6.25690E+01, 4.41760E+01, -6.20810E+01, 4.40800E+01,
-6.14280E+01, 4.46210E+01, -6.10530E+01, 4.48050E+01, -6.00300E+01,
4.50480E+01, -5.88110E+01, 4.50280E+01, -5.83660E+01, 4.50400E+01,
-5.83140E+01, 4.48780E+01, -5.87330E+01, 4.50340E+01, -5.87430E+01,
4.51630E+01, -5.88170E+01, 4.54030E+01, -5.89380E+01, 4.53260E+01,
-5.89110E+01, 4.55260E+01, NA, NA, -5.91250E+01, 4.56070E+01,
-5.90140E+01, 4.59690E+01, -5.89830E+01, 4.64640E+01, -5.89240E+01,
4.66300E+01, -5.93770E+01, 4.66810E+01, -5.90010E+01, 4.65640E+01,
-5.91230E+01, 4.67780E+01, -5.92350E+01, 4.70000E+01, -5.92310E+01,
4.68350E+01, NA, NA, -5.88530E+01, 4.68560E+01, NA, NA,
NA, NA, NA, NA, -5.83550E+01, 4.65300E+01, -5.83270E+01,
4.64970E+01, -5.86210E+01, 4.65320E+01, NA, NA, -5.82720E+01,
4.65060E+01, -5.81480E+01, 4.64490E+01, -5.83350E+01, 4.63650E+01, NA,
NA, -5.84800E+01, 4.63340E+01, -5.83980E+01, 4.63040E+01, -5.83390E+01,
4.62030E+01, -5.82170E+01, 4.62620E+01, NA, NA, -5.80420E+01,
4.61940E+01, -5.80360E+01, 4.57280E+01, -5.80590E+01, 4.55420E+01,
-5.83010E+01, 4.54730E+01, -5.83710E+01, 4.55010E+01, -5.86540E+01,
4.52870E+01, -5.87020E+01, 4.51740E+01, -5.87400E+01, 4.52620E+01,
-5.88330E+01, 4.53190E+01, -5.89740E+01, 4.53410E+01, NA, NA,
-5.85240E+01, 4.54970E+01, -5.81710E+01, 4.56200E+01, -5.79070E+01,
4.58370E+01, NA, NA, -5.73610E+01, 4.62660E+01, -5.71820E+01,
4.60770E+01, -5.70540E+01, 4.59920E+01, NA, NA, NA, NA,
-5.58460E+01, 4.51830E+01, -5.53690E+01, 4.52890E+01, -5.49260E+01,
4.53340E+01, -5.40070E+01, 4.53670E+01, -5.35510E+01, 4.54510E+01, NA,
NA, -5.15130E+01, 4.63060E+01, -5.15000E+01, 4.63280E+01, -5.08410E+01,
4.67780E+01, -4.99400E+01, 4.69670E+01, -4.88440E+01, 4.72810E+01,
-4.87250E+01, 4.76880E+01, -4.70460E+01, 4.87420E+01, -5.17870E+01,
4.83990E+01, -4.68830E+01, 4.97030E+01, -4.73700E+01, 5.03350E+01,
-4.75990E+01, 5.10690E+01, -5.15050E+01, 5.05110E+01, -4.80640E+01,
5.19200E+01, -4.83890E+01, 5.27580E+01, NA, NA, -4.85200E+01,
5.41250E+01, -4.87630E+01, 5.53650E+01, NA, NA, -4.84790E+01,
5.70560E+01, -4.82690E+01, 5.77990E+01, -4.77870E+01, 5.87570E+01,
-4.74070E+01, 5.96700E+01, -4.76990E+01, 6.02020E+01, -4.82110E+01,
6.03410E+01, -4.90240E+01, 6.05510E+01, -4.89050E+01, 6.06780E+01,
-4.80660E+01, 6.05380E+01, -4.61030E+01, 6.01290E+01, NA, NA,
-4.59880E+01, 6.02070E+01, -4.55240E+01, 5.99680E+01, -4.59540E+01,
5.97650E+01, -4.58830E+01, 5.98200E+01, -4.64730E+01, 6.00690E+01,
-4.64660E+01, 6.00730E+01, -4.59630E+01, 5.99330E+01, -4.63940E+01,
6.01380E+01, -4.64370E+01, 6.02270E+01, -4.67750E+01, 6.04410E+01,
-4.68020E+01, 6.04700E+01, -4.57440E+01, 5.97720E+01, -4.48480E+01,
5.96590E+01, -4.50540E+01, 5.97830E+01), .Dim=c(120, 2))
I would like to read this into R as an 120x2 array (matrix or data frame).
How would I do so?
I know I can just copy/paste all the values bound by c( ), and then just do
something like this:
y <- matrix(c(pasted values), nrow=120, ncol = 2)
But, I get errors messages when I try to copy/paste the whole dataset
because I reach line limits in the R console, such that certain values get
split, and then R doesn't know what to do with something like "0E+01, -".
So, I can instead try to copy/paste in a piecemeal fashion (which I've done,
and it works fine), but I'm sure there's a better way.
Thanks
Jeff
******************************************
Jeffrey Moore, Ph.D.
Postdoctoral Research Scientist
Duke Center for Marine Conservation
Duke University Marine Laboratory
135 Duke Marine Lab Road
Beaufort, NC 28516
Phone: (252) 504-7653
Fax: (252) 504-7689
Email: jemoore at duke.edu
*****************************************
[[alternative HTML version deleted]]
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
On Fri, 2006-02-24 at 08:48 +0100, Uwe Ligges wrote:
Gabor Grothendieck wrote:
Just source the file:
source("mywinbugsfile.R")
head(y)
... and don't forget to transpose the matrix afterwards, if this was BUGS code. Uwe Ligges
If this were a WinBUGS data file (or initial values file), the whole expression would be wrapped in a call to list(). In this case, you would need to assign the output from source(), or use the dget() function, e.g. for the EPILEPSY example:
mydata <- dget("epildata.txt")
names(mydata)
[1] "N" "T" "y" "Trt" "Base" "Age" "V4"
mydata$T
[1] 4 But, as Uwe points out, arrays will need to be reorganized, as WinBUGS fills matrices by row rather than column.
head(mydata$y) #wrong!
[,1] [,2] [,3] [,4] [1,] 5 9 9 7 [2,] 3 11 4 6 [3,] 3 0 0 7 [4,] 3 0 4 1 [5,] 3 5 3 1 [6,] 5 0 0 2 I wrote a function called "bugs2jags", which you will find in the coda package, for converting WinBUGS data files into the data format used by JAGS which is, by no coincidence, the format used by the R function dump().
library(coda)
Loading required package: lattice
bugs2jags("epildata.txt","epildata.R") #Creates file "epildata.R"
source("epildata.R")
ls()
[1] "Age" "Base" "N" "T" "Trt" "V4" "y" This creates objects in your work space, and sorts out the arrays
head(y) #right
[,1] [,2] [,3] [,4] [1,] 5 3 3 3 [2,] 3 5 3 3 [3,] 2 4 0 5 [4,] 4 4 1 4 [5,] 7 18 9 21 [6,] 5 2 8 7 Martyn
On 2/23/06, Jeffrey Moore <jemoore at duke.edu> wrote:
For those who use WinBUGS (or for those who are just familar with this
format), I have a text file that looks like this (which is how R would
export data if you used the "structure" function):
y= structure(.Data= c(-6.93310E+01, 4.32870E+01, -6.96600E+01, 4.35730E+01,
-6.90150E+01, 4.35870E+01, -5.81060E+01, 4.52890E+01, -6.65590E+01,
4.34600E+01, -6.61850E+01, 4.35000E+01, -6.54130E+01, 4.31940E+01,
-6.42790E+01, 4.34780E+01, -6.35520E+01, 4.38070E+01, -6.32980E+01,
4.39520E+01, -6.25690E+01, 4.41760E+01, -6.20810E+01, 4.40800E+01,
-6.14280E+01, 4.46210E+01, -6.10530E+01, 4.48050E+01, -6.00300E+01,
4.50480E+01, -5.88110E+01, 4.50280E+01, -5.83660E+01, 4.50400E+01,
-5.83140E+01, 4.48780E+01, -5.87330E+01, 4.50340E+01, -5.87430E+01,
4.51630E+01, -5.88170E+01, 4.54030E+01, -5.89380E+01, 4.53260E+01,
-5.89110E+01, 4.55260E+01, NA, NA, -5.91250E+01, 4.56070E+01,
-5.90140E+01, 4.59690E+01, -5.89830E+01, 4.64640E+01, -5.89240E+01,
4.66300E+01, -5.93770E+01, 4.66810E+01, -5.90010E+01, 4.65640E+01,
-5.91230E+01, 4.67780E+01, -5.92350E+01, 4.70000E+01, -5.92310E+01,
4.68350E+01, NA, NA, -5.88530E+01, 4.68560E+01, NA, NA,
NA, NA, NA, NA, -5.83550E+01, 4.65300E+01, -5.83270E+01,
4.64970E+01, -5.86210E+01, 4.65320E+01, NA, NA, -5.82720E+01,
4.65060E+01, -5.81480E+01, 4.64490E+01, -5.83350E+01, 4.63650E+01, NA,
NA, -5.84800E+01, 4.63340E+01, -5.83980E+01, 4.63040E+01, -5.83390E+01,
4.62030E+01, -5.82170E+01, 4.62620E+01, NA, NA, -5.80420E+01,
4.61940E+01, -5.80360E+01, 4.57280E+01, -5.80590E+01, 4.55420E+01,
-5.83010E+01, 4.54730E+01, -5.83710E+01, 4.55010E+01, -5.86540E+01,
4.52870E+01, -5.87020E+01, 4.51740E+01, -5.87400E+01, 4.52620E+01,
-5.88330E+01, 4.53190E+01, -5.89740E+01, 4.53410E+01, NA, NA,
-5.85240E+01, 4.54970E+01, -5.81710E+01, 4.56200E+01, -5.79070E+01,
4.58370E+01, NA, NA, -5.73610E+01, 4.62660E+01, -5.71820E+01,
4.60770E+01, -5.70540E+01, 4.59920E+01, NA, NA, NA, NA,
-5.58460E+01, 4.51830E+01, -5.53690E+01, 4.52890E+01, -5.49260E+01,
4.53340E+01, -5.40070E+01, 4.53670E+01, -5.35510E+01, 4.54510E+01, NA,
NA, -5.15130E+01, 4.63060E+01, -5.15000E+01, 4.63280E+01, -5.08410E+01,
4.67780E+01, -4.99400E+01, 4.69670E+01, -4.88440E+01, 4.72810E+01,
-4.87250E+01, 4.76880E+01, -4.70460E+01, 4.87420E+01, -5.17870E+01,
4.83990E+01, -4.68830E+01, 4.97030E+01, -4.73700E+01, 5.03350E+01,
-4.75990E+01, 5.10690E+01, -5.15050E+01, 5.05110E+01, -4.80640E+01,
5.19200E+01, -4.83890E+01, 5.27580E+01, NA, NA, -4.85200E+01,
5.41250E+01, -4.87630E+01, 5.53650E+01, NA, NA, -4.84790E+01,
5.70560E+01, -4.82690E+01, 5.77990E+01, -4.77870E+01, 5.87570E+01,
-4.74070E+01, 5.96700E+01, -4.76990E+01, 6.02020E+01, -4.82110E+01,
6.03410E+01, -4.90240E+01, 6.05510E+01, -4.89050E+01, 6.06780E+01,
-4.80660E+01, 6.05380E+01, -4.61030E+01, 6.01290E+01, NA, NA,
-4.59880E+01, 6.02070E+01, -4.55240E+01, 5.99680E+01, -4.59540E+01,
5.97650E+01, -4.58830E+01, 5.98200E+01, -4.64730E+01, 6.00690E+01,
-4.64660E+01, 6.00730E+01, -4.59630E+01, 5.99330E+01, -4.63940E+01,
6.01380E+01, -4.64370E+01, 6.02270E+01, -4.67750E+01, 6.04410E+01,
-4.68020E+01, 6.04700E+01, -4.57440E+01, 5.97720E+01, -4.48480E+01,
5.96590E+01, -4.50540E+01, 5.97830E+01), .Dim=c(120, 2))
I would like to read this into R as an 120x2 array (matrix or data frame).
How would I do so?
I know I can just copy/paste all the values bound by c( ), and then just do
something like this:
y <- matrix(c(pasted values), nrow=120, ncol = 2)
But, I get errors messages when I try to copy/paste the whole dataset
because I reach line limits in the R console, such that certain values get
split, and then R doesn't know what to do with something like "0E+01, -".
So, I can instead try to copy/paste in a piecemeal fashion (which I've done,
and it works fine), but I'm sure there's a better way.
Thanks
Jeff
******************************************
Jeffrey Moore, Ph.D.
Postdoctoral Research Scientist
Duke Center for Marine Conservation
Duke University Marine Laboratory
135 Duke Marine Lab Road
Beaufort, NC 28516
Phone: (252) 504-7653
Fax: (252) 504-7689
Email: jemoore at duke.edu
*****************************************
[[alternative HTML version deleted]]
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
-----------------------------------------------------------------------
This message and its attachments are strictly confidential. ...{{dropped}}