R define dimensions of empty data frame

前端 未结 11 1136
清歌不尽
清歌不尽 2020-12-12 21:34

I am trying to collect some data from multiple subsets of a data set and need to create a data frame to collect the results. My problem is don\'t know how to create an empt

相关标签:
11条回答
  • 2020-12-12 22:15

    You may use NULL instead of NA. This creates a truly empty data frame.

    0 讨论(0)
  • 2020-12-12 22:15
    df = data.frame(matrix("", ncol = 3, nrow = 10)  
    
    0 讨论(0)
  • 2020-12-12 22:15

    If only the column names are available like :

    cnms <- c("Nam1","Nam2","Nam3")
    

    To create an empty data frame with the above variable names, first create a data.frame object:

    emptydf <- data.frame()
    

    Now call zeroth element of every column, thus creating an empty data frame with the given variable names:

    for( i in 1:length(cnms)){
         emptydf[0,eval(cnms[i])]
     }
    
    0 讨论(0)
  • 2020-12-12 22:17

    I have come across the same problem and have a cleaner solution. Instead of creating an empty data.frame you can instead save your data as a named list. Once you have added all results to this list you convert it to a data.frame after.

    For the case of adding features one at a time this works best.

    mylist = list()
    for(column in 1:10) mylist$column = rnorm(10)
    mydf = data.frame(mylist)
    

    For the case of adding rows one at a time this becomes tricky due to mixed types. If all types are the same it is easy.

    mylist = list()
    for(row in 1:10) mylist$row = rnorm(10)
    mydf = data.frame(do.call(rbind, mylist))
    

    I haven't found a simple way to add rows of mixed types. In this case, if you must do it this way, the empty data.frame is probably the best solution.

    0 讨论(0)
  • 2020-12-12 22:19

    Here a solution if you want an empty data frame with a defined number of rows and NO columns:

    df = data.frame(matrix(NA, ncol=1, nrow=10)[-1]
    
    0 讨论(0)
  • 2020-12-12 22:21

    Just create a data frame of empty vectors:

    collect1 <- data.frame(id = character(0), max1 = numeric(0), max2 = numeric(0))
    

    But if you know how many rows you're going to have in advance, you should just create the data frame with that many rows to start with.

    0 讨论(0)
提交回复
热议问题