# [R] Defining a "list"

Rolf Turner r.turner at auckland.ac.nz
Wed Oct 15 23:28:42 CEST 2008

```On 16/10/2008, at 12:28 AM, Henrique Dallazuanna wrote:

> Try this:
>
> lapply(1:n, rnorm)

That has nothing to do with what the inquirer *asked*.

>
> On Wed, Oct 15, 2008 at 8:19 AM, Megh Dal <megh700004 at yahoo.com>
> wrote:
>
>> Can anyone please tell me how to define a "list". Suppose I want
>> to define
>> a list object "result" with length n then want to fill each place of
>> "result" with different objects. For e.g.
>>
>> i=1

Why have you set i=1?  You make no use at all of ``i''!!!

>> result[1] = rnorm(1)
>>
>> i=2
>> result[2] = rnorm(2)
>>
>> .......................
>>
>> i=n
>> result[n] = rnorm(n)
>>
>> What would be the best way to do that?

Simply start off with

result <- list()

Then you can do

result[[1]] <- rnorm(1)
result[[2]] <- rnorm(2)
result[[42]] <- "a load of dingos' kidneys"

Note 1:  This will result in a list of length (at this stage) 42.
Entries 3 to 41 inclusive of this list will be NULL.

Note 2:  Use the ***double*** brackets!  The distinction is that
if result is a *list* then

result[1] is a ***list*** of length 1, the sole entry of that
list being the first entry of result

result[[1]] is the first entry of result, pure and simple.

If you tried

result[2] <- rnorm(2)

you'd get a warning message about the wrong number of items to replace
(you have tried to assign something of length 2 to something of
length 1)
and result[[2] would contain only the first entry of the vector rnorm
(2).

cheers,

Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

```