Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 编写向数据帧添加行的函数_R - Fatal编程技术网

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)