【问题标题】:how do you add new columns to an empty data frame in R如何将新列添加到 R 中的空数据框
【发布时间】:2016-06-23 13:56:21
【问题描述】:

我这样声明一个空数据框:

df <- data.frame()

然后我会处理一些文件,作为过程,我需要构建我的df 数据框。我需要继续向它添加列:

例如,我处理了一些文件并构建了一个名为new_df 的数据框,我现在需要将这个new_df 添加到我的df

我试过了:

latest_df <- cbind(latest_df, new_df)

我收到此错误:

data.frame(..., check.names = FALSE) 中的错误:参数暗示 不同的行数:0, 1

【问题讨论】:

  • 不要先创建一个空的data.frame。只需从 new_df 开始,然后继续添加您需要的任何其他列。但要确保它们具有相同的行数——这是data.frames 的基本要求。如果您需要更大的灵活性,请改用list
  • 你应该做一个可重现的例子。目前尚不清楚每个new_df 是否具有相同的行数(在这种情况下,空的df 是不必要的)。
  • 检查nrow(latest_df)length(new_df)。似乎它们不同。

标签: r


【解决方案1】:

把数据放到索引最后一列之后

new_df = data.frame()


new_df[,ncol(new_df)+1] = NA

所以如果你知道你有 3 列,那么:

new_df[,4] = c('a','b','c')

例子:

new_df = data.frame('a'=NA)
for(i in 1:10){
  new_df[,ncol(new_df)+1] = NA
}
new_df

编辑:

ProcessExample <- function(){
  return(c(5)) #just returns 5 as fake data everytime
}

new_df = data.frame(matrix(nrow=1))
for(i in 1:10){
  new_df[,ncol(new_df)+1] = ProcessExample()
}
latest_df <- new_df[,-1]

或者只是添加行并转置数据集

new_df = data.frame()
for(i in 1:10){
  new_df[i,1] = ProcessExample()
}
latest_df <- t(new_df)

【讨论】:

  • 我必须从一个空数据框开始,进入循环,处理数据并不断添加到空数据框。您的回答不适用于我正在尝试做的事情。
  • @ChrsityCasey,每列一行。最新的df应该有一行
  • 再次检查我的答案,我编辑了它。我认为这应该是你要找的东西
【解决方案2】:

如果您在进入循环之前只是想要一个适当大小的空数据框,并假设“df”和“new_df”具有相同的行数 x,请尝试

df <- data.frame(matrix(nrow=x))

for (i in 1:n){
temp[i] <- % some vector of length x
}

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多