将值分配给R

时间:2018-11-14 16:16:39

标签: r dataframe

我有一个函数,该函数返回具有50列(一行)以上的数据帧。 该函数在循环内调用(不适用于),因此我得到了一个数据帧列表,每个数据帧一行。

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

      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

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

所以,恐怕我走了一条通往无路可走的死路。

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

df$conn <- 3

任何提示将不胜感激。

0 个答案:

没有答案