迭代函数导致R上的矩阵或数据帧

时间:2017-10-16 03:51:18

标签: r matrix iteration rstudio

我的迭代函数的输出打印很好,但是如何将它保存为数据框/矩阵对象?

     for(i in id){
            print(data.frame("ID" = i, "nobs" = length(data4[data4 == i])))
    }


     ID nobs
   1  1  117
      ID nobs
    1  2 1041
      ID nobs
    1  3  243
      ID nobs
    1  4  474
     ID nobs
   1  5  402
     ID nobs
   1  6  228
     ID nobs
   1  7  442
     ID nobs
    1  8  192

我之前尝试过创建矩阵,但如果我尝试将其分配给矩阵,我会得到一个NULL值。

    mat.obs <- matrix(NA, nrow = 332, ncol = 2)
    for(i in id){
            print(data.frame("ID" = i, "nobs" = length(data4[data4 == i])))
            mat.obs <- data.frame("ID" = i, "nobs" = length(data4[data4 == i]))
          }
      }

2 个答案:

答案 0 :(得分:0)

试试这个:

library(plyr)
ldply(id, function(i) data.frame("ID" = i, "nobs" = length(data4[data4 == i])))

答案 1 :(得分:0)

你可以这样使用data.table

library(data.table)
# create a data.table with data4 as a column named 'id'
DT = data.table(id = data4)

# count observations with each ID
DT[ , .N, by = id]