R 编写向数据帧添加行的函数
我正在尝试编写一个函数,该函数将自动在数据帧的末尾添加一个空行,并将生成的数据帧指定给原始名称 例如,我使用以下方法创建了空数据框R 编写向数据帧添加行的函数,r,R,我正在尝试编写一个函数,该函数将自动在数据帧的末尾添加一个空行,并将生成的数据帧指定给原始名称 例如,我使用以下方法创建了空数据框data: data <- data.frame(id = integer(0), name = character(0)) 这将返回相同的数据帧,并附加一行NAs: > data id name 1 NA <NA> 很明显我错过了什么,但我不确定会是什么。非常感谢您的帮助 A.职能方法 返回df,然后将其分配给新数据帧或覆盖现有
data
:
data <- data.frame(id = integer(0), name = character(0))
这将返回相同的数据帧,并附加一行NA
s:
> data
id name
1 NA <NA>
很明显我错过了什么,但我不确定会是什么。非常感谢您的帮助 A.职能方法
返回df
,然后将其分配给新数据帧或覆盖现有数据帧:
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
df
}
data <- add_row(data)
# or
data2 <- add_row(data)
如果您将NA行重新分配给数据
或新名称,则添加NA行就足够了,因此您可能不需要首先添加行
更新
固定的。增加了其他备选方案。A.功能方法
返回df
,然后将其分配给新数据帧或覆盖现有数据帧:
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
df
}
data <- add_row(data)
# or
data2 <- add_row(data)
如果您将NA行重新分配给数据
或新名称,则添加NA行就足够了,因此您可能不需要首先添加行
更新
固定的。添加了其他备选方案。您需要稍微修改代码,如下所示:
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
return(df)
}
data <- add_row(data)
add_row您需要稍微修改代码,如下所示:
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
return(df)
}
data <- add_row(data)
add_row您必须从函数返回数据帧,然后您可以将函数的结果分配给新的数据帧或将其分配回覆盖它的原始数据帧。@G.Grothendieck如果我理解正确,您是说我需要添加return(df)
添加到的正文中,然后将输出分配给数据。函数无法覆盖数据吗?您必须从函数返回数据帧,然后您可以将函数结果分配给新的数据帧,或将其分配回覆盖它的原始数据帧。@G.Grothendieck如果我理解正确,您是说我需要添加return(df)
添加到的正文中,然后将输出分配给数据。函数是否无法覆盖数据?
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
df
}
data <- add_row(data)
# or
data2 <- add_row(data)
add_row_name <- function(df, envir = parent.frame()) {
dfx <- envir[[df]]
dfx[nrow(dfx) + 1, 1:ncol(dfx)] <- NA
envir[[df]] <- dfx
invisible(dfx)
}
add_row_name("data")
add_row_fo <- function(formula, envir = environment(formula)) {
add_row_name(all.vars(formula), envir)
}
add_row_fo(~ data)
add_row_ns <- function(df, envir = parent.frame()) {
nm <- deparse(substitute(df))
dfx <- envir[[nm]]
dfx[nrow(dfx) + 1, 1:ncol(dfx)] <- NA
envir[[nm]] <- dfx
invisible(dfx)
}
add_row_ns(data)
rbind(data, NA)
add_row <- function(df) {
df[nrow(df) + 1, 1:ncol(df)] <- NA
return(df)
}
data <- add_row(data)