title: Combining items from a data.frame list into a single data.table
body: <p>I have a named data.frame that contains 10 items with three columns each. Each item in the data.frame looks like this: </p>
  
  <pre><code>$RandArcBo1
  $RandArcBo1$x
   [1]  -97.5 -174.5  156.5 -172.5  111.5 -132.5  142.5  115.5  146.5  171.5  151.5  162.5  168.5 -153.5  129.5  123.5
  
  $RandArcBo1$y
   [1] 86.56732 79.56732 59.56732 77.56732 77.56732 75.56732 58.56732 82.56732 84.56732 74.56732 78.56732 74.56732 76.56732
  [14] 77.56732 78.56732 84.56732
  
  $RandArcBo1$Species
  [1] "RandArcBo1"
  </code></pre>
  
  <p>I would like to convert this to one data.table with the columns rearranged. My current approach to this is:</p>
  
  <pre><code>tempList &lt;- c()
  for (j in seq_along(dfList)){
     tempList &lt;- append(tempList, as.data.table(c(dfList[[j]][3], dfList[[j]][1], dfList[[j]][2])))
  }
  assign(paste(name, "RandPoints", sep = ""), rbindlist(tempList))
  </code></pre>
  
  <p>However, when I run this I get the following error:</p>
  
  <pre><code>Error in rbindlist(tempList) : 
    Item 1 of list input is not a data.frame, data.table or list
  </code></pre>
  
  <p>Is there a way to solve this error and use rbindlist, or perhaps a way to iteratively add rows to a data.table? I've tried that approach as well, and have not been able to solve the problem of how to create an empty data.table to add rows to.</p>
  
  <p>For more information, here is my full script:</p>
  
  <pre><code>#You will need to collect the following in a folder specified as the working directory:
  #   ASCII layers representing the Ms for each species to use as a mask
  #   a file named "NumbLoc.csv" with names of ASCII layers and the number of points to be randomly generated in each
  require(raster)
  require(dismo)
  require(SDMTools)
  require(data.table)
  #Get files
  fileList &lt;- list.files(pattern="*.asc", full.names=TRUE)
  numbPoints &lt;- read.csv("NumbLoc.csv", header = TRUE, sep = ",", stringsAsFactors=FALSE)
  nPoints&lt;-as.data.frame(numbPoints)
  #Loop through files in specified folder
  for (a in 1:length(fileList)){
    name &lt;- substr(fileList[a], 3, 7 )
    print(name)
    #Reads in ASCII, changes it to raster
    #Raster will serve as a mask for generation of random points
    assign(name,raster(fileList[a]))
    #starts/clears a list of dataframes for each species
    dfList &lt;- c()
    #loops through however many iterations you want, generating random points as specified in csv file
    for(i in 1:10){
      nameRand &lt;- paste("Rand", substr(fileList[a], 3, 7),i, sep = "")
      dfList[[nameRand]]=c(as.data.frame(randomPoints(get(name), nPoints$Number[nPoints$Species==name])))
    }
    #adds a column in each data frame specifying the name of the randomized run
    #converts data frame to a series of data table with columns in the correct order
    tempList &lt;- c()
    for (j in seq_along(dfList)){
      dfList[[j]]$Species &lt;- names(dfList[j])
      #assign(tempListName, as.data.table(c(dfList[[j]][3], dfList[[j]][1], dfList[[j]][2])))
      tempList &lt;- append(tempList, as.data.table(c(dfList[[j]][3], dfList[[j]][1], dfList[[j]][2])))
    }
    assign(paste(name, "RandPoints", sep = ""), rbindlist(tempList))
  }
  </code></pre>
  
  <p>The data frame looks like this: </p>
  
  <pre><code>&gt; dput(head(dfList))
  structure(list(RandArcBo1 = structure(list(x = c(-97.5, -174.5, 
  156.5, -172.5, 111.5, -132.5, 142.5, 115.5, 146.5, 171.5, 151.5, 
  162.5, 168.5, -153.5, 129.5, 123.5), y = c(86.567321777, 79.567321777, 
  59.567321777, 77.567321777, 77.567321777, 75.567321777, 58.567321777, 
  82.567321777, 84.567321777, 74.567321777, 78.567321777, 74.567321777, 
  76.567321777, 77.567321777, 78.567321777, 84.567321777), Species = "RandArcBo1"), .Names = c("x", 
  "y", "Species")), RandArcBo2 = structure(list(x = c(170.5, -160.5, 
  150.5, 165.5, 78.5, 74.5, -161.5, -129.5, -134.5, -164.5, 166.5, 
  -169.5, -156.5, -163.5, 89.5, 150.5), y = c(86.567321777, 76.567321777, 
  57.567321777, 70.567321777, 77.567321777, 78.567321777, 74.567321777, 
  74.567321777, 72.567321777, 80.567321777, 84.567321777, 85.567321777, 
  78.567321777, 80.567321777, 76.567321777, 83.567321777), Species = "RandArcBo2"), .Names = c("x", 
  "y", "Species")), RandArcBo3 = structure(list(x = c(179.5, 149.5, 
  -153.5, 129.5, 158.5, 169.5, 131.5, -147.5, -140.5, 128.5, 173.5, 
  -172.5, -177.5, -91.5, -143.5, 87.5), y = c(63.567321777, 57.567321777, 
  72.567321777, 80.567321777, 50.567321777, 58.567321777, 76.567321777, 
  72.567321777, 72.567321777, 81.567321777, 58.567321777, 88.567321777, 
  88.567321777, 72.567321777, 73.567321777, 82.567321777), Species = "RandArcBo3"), .Names = c("x", 
  "y", "Species")), RandArcBo4 = structure(list(x = c(114.5, 156.5, 
  76.5, 171.5, -137.5, -140.5, -142.5, 135.5, 152.5, -136.5, -167.5, 
  -131.5, 94.5, 154.5, -78.5, -124.5), y = c(83.567321777, 80.567321777, 
  78.567321777, 57.567321777, 69.567321777, 73.567321777, 80.567321777, 
  84.567321777, 52.567321777, 70.567321777, 67.567321777, 70.567321777, 
  85.567321777, 85.567321777, 84.567321777, 81.567321777), Species = "RandArcBo4"), .Names = c("x", 
  "y", "Species")), RandArcBo5 = structure(list(x = c(-162.5, 79.5, 
  179.5, 166.5, 81.5, 115.5, 155.5, 84.5, 163.5, 166.5, 178.5, 
  -119.5, -157.5, 128.5, 118.5, 164.5), y = c(77.567321777, 82.567321777, 
  74.567321777, 55.567321777, 81.567321777, 81.567321777, 52.567321777, 
  75.567321777, 51.567321777, 73.567321777, 61.567321777, 75.567321777, 
  77.567321777, 81.567321777, 84.567321777, 55.567321777), Species = "RandArcBo5"), .Names = c("x", 
  "y", "Species")), RandArcBo6 = structure(list(x = c(-148.5, 123.5, 
  -130.5, 164.5, -129.5, 168.5, -106.5, 144.5, 166.5, -127.5, -135.5, 
  96.5, -95.5, 76.5, -99.5, -144.5), y = c(71.567321777, 78.567321777, 
  85.567321777, 70.567321777, 76.567321777, 79.567321777, 85.567321777, 
  58.567321777, 56.567321777, 78.567321777, 74.567321777, 76.567321777, 
  86.567321777, 73.567321777, 82.567321777, 75.567321777), Species = "RandArcBo6"), .Names = c("x", 
  "y", "Species"))), .Names = c("RandArcBo1", "RandArcBo2", "RandArcBo3", 
  "RandArcBo4", "RandArcBo5", "RandArcBo6"))
  </code></pre>