首页 > 解决方案 > 为R中的空行赋值

问题描述

我有一个函数返回一个超过 50 列(一行)的数据框。这个函数在一个循环(lapply)内被调用,所以我得到一个数据帧列表,每行一行。

我在函数的最开始初始化一个空数据框,以填充进程返回的实际数据(此处为测试的简短版本)

      df <- read.csv(text = "conn,pc,server,profile")

R> df
[1] conn    pc      server  profile car     id      amount 
<0 rows> (or 0-length row.names)

考虑到该过程有时不会为所有列返回值,我想为该行分配值。

类似的 SO 问题往往依赖于以这种方式初始化数据框:

df <- data.frame("conn"= NA, "pc"= NA, "server"= NA, "profile" = NA)

但我不想要一行 NA,以防没有返回值。

所以在我的功能中,我首先尝试了:

returned.conn.value <- 3  # assigned by hand for the sake of simplicity

df$conn <- returned.conn.value
    Error in `$<-.data.frame`(`*tmp*`, conn, value = 3) : 
      replacement has 1 row, data has 0

所以我发现没有办法为空数据框中的列添加值,但是......

df[1,1] <- 3

令我惊讶的是,这奏效了。但是,我认为按索引为列赋值非常难看,所以我尝试了这个:

grep("^conn$", colnames(df))
[1] 1

确实更丑,因为它迫使我为每一列写相同的行(而不是手动计数,是的)

所以,我怕我走上了一条死路,无路可走。

有什么方法可以初始化一个空的数据框,因为它可以让我像下面那样做简单的分配而没有问题?

df$conn <- 3

任何提示将不胜感激。

标签: rdataframe

解决方案


推荐阅读