【问题标题】:Fill an empty data frame in R在R中填充一个空数据框
【发布时间】:2014-11-18 19:11:19
【问题描述】:

我想创建一个空数据框,其中一列保存字符数据,一列保存数字数据,然后填充该数据框。

dat<-as.data.frame(cbind(character(3),vector("numeric",3)))
dat
for (i in 1:3)
{
  dat[i,1]<-as.character("f")
  dat[i,2]<-i
}

dat

结果如下。如您所见,我得到了所有 NA:

> dat
    V1   V2
1 <NA> <NA>
2 <NA> <NA>
3 <NA> <NA>

你能建议怎么做吗?

【问题讨论】:

  • 转储循环并使用[[&lt;-,即dat[[1]] &lt;- "f"; dat[[2]] &lt;- 1:nrow(dat)

标签: r


【解决方案1】:

我不知道您为什么要这样做,但这里有一些提示:

  1. 不要使用as.data.frame(cbind(...))
  2. 确保使用stringsAsFactors
  3. 在代码中使用空格(使内容更易于阅读)。

因此,您可以尝试:

dat <- data.frame(character(3), numeric(3), stringsAsFactors = FALSE)
dat
#   character.3. numeric.3.
# 1                       0
# 2                       0
# 3                       0

for (i in 1:3)
  {
      dat[i,1]<-as.character("f")
      dat[i,2]<-i
  }

dat
#   character.3. numeric.3.
# 1            f          1
# 2            f          2
# 3            f          3

【讨论】:

    【解决方案2】:

    如何创建一个真正空的数据框并添加适当的数据?

    dat <- as.data.frame(matrix(ncol=2, nrow=0))
    for(i in 1:3) {
      dat[i,1] = as.character('f')
      dat[i,2] = i
    }
    dat
    ##  V1 V2
    ##1  f  1
    ##2  f  2
    ##3  f  3
    

    【讨论】:

      【解决方案3】:

      我想你想用stingsAsFactors = F

      dat<-as.data.frame(cbind(character(3),vector("numeric",3)), stringsAsFactors = F)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        • 2018-11-23
        • 2016-02-14
        • 1970-01-01
        相关资源
        最近更新 更多