【发布时间】:2018-03-27 12:34:05
【问题描述】:
我的迭代函数的输出打印正常,但如何将其保存为数据框/矩阵对象?
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]))
}
}
【问题讨论】:
-
data4是向量?? -
你必须将输出分配给'mat.obj`中的行
mat.obs[i, ] <- c("ID" = i, "nobs" = length(data4[data4 == i])) -
你不能用
table(data4)作为开始吗?我建议不要使用matrix,因为一列的单位 与其他列不同;虽然它会以编程方式工作,但它有点草率。在不假设列具有相同单位的情况下,data.frame会更合适。 (这似乎有点迂腐,但将matrix视为单一类型的东西是“一件好事(tm)”。) -
谢谢大家。总是在这里学习新东西!
标签: r matrix iteration rstudio