>From the help page of rep:


"Value:

     An object of the same type as 'x' (except that 'rep' will coerce
     pairlists to vector lists)."

So, you can do:

rep(list(character), 2)

On Tue, Jun 30, 2009 at 9:00 AM, Craig P. Pyrame <crappyr@gmail.com> wrote:

> Dear list,
>
> I am trying to construct a list of functions using rep.  I can't understand
> the following:
>
> > c(character, character) => list with two functions
> > rep(character, 2) => error
>
> The error says that "object of type 'special' is not subsettable", and I
> have no idea what this means.  Would you please help me.
>
> The purpose of doing the above is that I need to use scan for reading files
> that happen to be too large and a bit irregular for read.table.  To make
> scan work, I need to specify the types of values in each column (record
> field).  I can specify the 'what' argument as follows:
>
> > records <- scan(..., what = list(character(0), character(0), integer(0),
> numeric(0), character(0), ...), ...)
>
> but this quickly becomes boring for large enough records. (Why does not
> scan take a character string with class names, as read.table does, instead
> of a list with dummy objects?) So I am trying to do tricks, and one idea
> that seems pretty simple is to create a list of functions that create
> vectors of a particular type, and apply them (using lapply) to get a list of
> prototype objects:
>
> > types = lapply(c(rep(character, 2), integer, numeric, ...),
> function(type) type(0)) => error
>
> But this fails, as above.  Why?  Why can c(character, character) create a
> list of two functions, but rep(character, 2) can't?
>
> Another solution to my problem I could find (and you'll hopefully suggest
> an even better one) is to use class names instead, like so:
>
> > types = lapply(c(rep('character', 2), 'integer', 'numeric', ...),
> function(type) vector(type, 0))
>
> but I am still curious why the above doesn't work as I would expect it to.
>
> Best regards,
> Craig
>
> ______________________________________________
> 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.
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

	[[alternative HTML version deleted]]


