【发布时间】:2016-04-12 20:36:25
【问题描述】:
我想使用如下函数向现有数据框添加新行:
df <- data.frame(num1 = numeric(),
num2 = numeric(),
int1 = integer(),
chr1 = character(),
stringsAsFactors=FALSE)
filler <- function () {
newrow = c(0.1, 0.01, 100, "char")
df[nrow(df)+1, ] <- newrow
assign(x = "df", value = df, envir = .GlobalEnv)
}
filler
但什么都没有发生。
我想得到以下输出:
> df
num1 num2 int1 chr1
1 0.1 0.01 100 char
注意:我不想在函数中定义新表,因为我想用不同的“newrow”值重新运行函数。
【问题讨论】:
-
这一行会将所有值强制转换为
characterBTW:c(0.1, 0.01, 100, "char")。 -
您应该将
df传递给函数,并将return修改后的数据框传递给函数,以使函数适合函数式编程范例。或者让函数不接触数据框,只返回要添加的行的 1 行数据框。无论哪种情况,只需在函数内部或外部使用rbind()。 -
@Gregor - 您的解决方案运行良好。谢谢! :)