我有一个空数据框。我尝试为此数据框的列分配一些值。由于数据帧为空,我希望获得一个空数据帧,如下所示:
df = data_frame(a = integer())
df %>%
mutate(a = 1)
# A tibble: 0 × 1
# ... with 1 variables: a <dbl>
当赋值是矢量时,会出现问题。然后我收到以下错误:
df %>%
mutate(a = 1:2)
# Error: wrong result size (2), expected 0 or 1
当我尝试使用$
运算符分配值时,即使分配单个值也会产生错误:
df$a = 1
# Error in `$<-.data.frame`(`*tmp*`, "a", value = 1) :
# replacement has 1 row, data has 0
尝试改变空数据框的列的正确和安全的方法是什么?
更新
请注意,我希望得到空数据帧。我不想在数据框中添加新行。
我希望得到空数据帧,因为mutate和$
运算符不会正常更改行数。我不想违反他们的正常行为。
我正在寻找一个简洁的解决方案。可以解决此问题将代码包装到tryCatch
或if
表达式中。但它们会使实际代码混乱。我想知道是否有更好的方法。
答案 0 :(得分:0)
怎么样
df <- data_frame(a = integer())
df %>%
mutate(a = (1:10)[seq_len(nrow(df))])
OR
df$a <- (1:10)[seq_len(nrow(df))]
基本上,如果df
中包含任何行,则该列将被填充;如果不是,则返回空数据框。将(1:10)
替换为所需的向量。