首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中创建维度为M x N的数据框

如何在R中创建维度为M x N的数据框
EN

Stack Overflow用户
提问于 2012-05-11 09:59:41
回答 2查看 4.2K关注 0票数 3

有办法做到这一点吗?

我被这个卡住了:

代码语言:javascript
复制
m <- 10 # nof row
n <- 5  # nof column

# We will fill each cell with '0'

all <-c()
for (i in 1:m) {
   row_i <- c(rep(0,n))
   all <- c(all,row_i)
}

它只创建1行作为输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-11 10:05:29

为什么不使用矩阵呢?data.frames用于存储不同类型的列。

所以,

代码语言:javascript
复制
m = 10
n = 5
mat = matrix(0, nrow = m, ncol = n)

如果你真的想要一个data.frame,强制使用一个--列名将是默认的:

代码语言:javascript
复制
dat = as.data.frame(mat)
names(dat)
[1] "V1" "V2" "V3" "V4" "V5"

你的方法的问题是,你只是简单地一个接一个地追加这些值,而忽略了你需要的尺寸。你可以这样做,但是增加数据不是一个好主意,更好的办法是像上面那样预先分配它们。另外,这会产生一个矩阵,我认为这是你应该使用的。

警告:前面有错误的代码!

代码语言:javascript
复制
m <- 10 # nof row
n <- 5  # nof column

all <- NULL
for (i in 1:m) {
  row_i <- c(rep(0,n))
  all <- rbind(all,row_i)
}
票数 7
EN

Stack Overflow用户

发布于 2012-05-11 12:30:50

这将生成以零填充的data.frame。

代码语言:javascript
复制
as.data.frame(lapply(structure(.Data=1:N,.Names=1:N),function(x) numeric(M)))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10544442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档