From sfalcon at fhcrc.org  Tue Jul 17 07:06:44 2007
From: sfalcon at fhcrc.org (Seth Falcon)
Date: Mon, 16 Jul 2007 22:06:44 -0700
Subject: [Rd] S4 coerce
In-Reply-To: <469B8771.5060601@bank-banque-canada.ca> (Paul Gilbert's message
	of "Mon, 16 Jul 2007 10:57:53 -0400")
References: <469B8771.5060601@bank-banque-canada.ca>
Message-ID: <m2fy3nipp7.fsf@ziti.fhcrc.org>

Paul Gilbert <pgilbert at bank-banque-canada.ca> writes:

> (I am not sure if this is a bug or a request for a more understandable 
> warning, or possible something obvious I should be posting on r-help.)
>
> I am trying to coerce an new class object to be a DBIConnection and it 
> does not work the way I think it should:
>
> R version 2.5.1 (2007-06-27) ...
>  > require("RMySQL") # or require("RSQLite")
> Loading required package: RMySQL
> Loading required package: DBI
> [1] TRUE
>  > m <- dbDriver("MySQL")  # or  m <- dbDriver("SQLite")
>  > con <- dbConnect(m, dbname="test")
>  > dbGetQuery(con, "create table zzz (
> +    vintage     VARCHAR(20) NOT NULL,
> +    alias       VARCHAR(20) default NULL,
> +    Documentation     TEXT,
> +    PRIMARY KEY (vintage)
> +    );")
> NULL
>  > dbListTables(con)
>   [1] "zzz"
>  > setClass("TSconnection", representation(con="DBIConnection",
> +    vintage = "logical",
> +    panel   = "logical")
> +    )
> [1] "TSconnection"
>  > setAs("TSconnection", "DBIConnection", def = function(from) from at con)

I think things work as you expect up until this pint.

>  > setIs("TSconnection", "DBIConnection", coerce = function(x)
>  > x at con)

I'm confused about what you want to do here.  If you want TSconnection
to be a DBIConnection, why wouldn't you use inheritance?

   setClass("TSconnection", contains="DBIConnection", ...)

+ seth

-- 
Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center
http://bioconductor.org



[Rd] S4 coerce
Seth Falcon