在特定的行索引处向数据帧添加新行,而不是追加。

11 浏览
0 Comments

在特定的行索引处向数据帧添加新行,而不是追加。

下面的代码将一个向量与一个数据框组合起来:\n

newrow = c(1:4)
existingDF = rbind(existingDF,newrow)

\n然而,该代码总是将新行插入到数据框的末尾。\n我该如何将行插入到数据框中的指定位置?例如,假设数据框有20行,我该如何在第10行和第11行之间插入新行?

0
0 Comments

问题的原因:

问题是用户想要在特定的行索引处向数据框添加新的行,而不是将新行附加到数据框末尾。用户在提问中使用了`dplyr::add_row`函数,并使用`.before`参数来指定要插入行的位置。

解决方法:

用户可以使用`dplyr::add_row`函数的`.before`参数来指定要插入行的位置。在示例中,用户将新行插入到了第3行的前面(即索引为2的位置)。通过指定新行的相关值,新行将被添加到数据框中,并且现有的行将向下移动。

需要注意的是,`add_row`函数是从`tibble`包导入到`dplyr`中的。这是一个需要用户知道的额外信息。

通过`dplyr::add_row`函数的`.before`参数,用户可以在特定的行索引处向数据框添加新的行。这是一个很有用的功能,用户可以通过指定新行的位置和相关值来灵活地操作数据框。需要注意的是,`add_row`函数是从`tibble`包导入到`dplyr`中的。

0
0 Comments

问题的原因:在给定的代码中,问题是在将新行添加到数据框时,使用了一种不高效的方法。使用的方法是通过将新行与现有数据框进行合并,然后重新排序行索引来实现。这种方法在处理大型数据框时可能会非常缓慢。

解决方法:为了更高效地在特定行索引处添加新行,可以使用以下方法:

insertRow <- function(existingDF, newrow, r) {
  existingDF <- rbind(existingDF[1:r-1,], newrow, existingDF[r:nrow(existingDF),])
  row.names(existingDF) <- 1:nrow(existingDF)
  return(existingDF)
}

这个解决方法使用了一种更直接的方法,它首先将新行添加到现有数据框的指定位置,然后通过重新设置行索引来更新数据框。

以上是对于问题的原因和解决方法的整理。这个解决方法相对于原始代码来说更高效,可以更快地将新行添加到数据框中的指定位置。

0
0 Comments

问题的原因是用户想要在特定的行索引处向数据框中添加新行,而不是追加到末尾。他们尝试了两种方法,一种是使用rbind函数,另一种是使用自定义的insertRow函数。然而,他们发现在某些情况下,这些方法无法正常工作。

解决方法是使用自定义的insertRow函数。该函数首先将要插入的行之后的所有行向下移动一个位置,然后将新行插入到指定的行索引处。这个方法比使用rbind函数更快,并且在规模扩大时表现良好。

下面是代码中的解决方法部分:

existingDF <- as.data.frame(matrix(seq(20),nrow=5,ncol=4))
r <- 3
newrow <- seq(4)
insertRow <- function(existingDF, newrow, r) {
  existingDF[seq(r+1,nrow(existingDF)+1),] <- existingDF[seq(r,nrow(existingDF)),]
  existingDF[r,] <- newrow
  existingDF
}
insertRow(existingDF, newrow, r)

另外,通过对不同规模问题的基准测试,用户发现insertRow函数的性能比rbind函数更好。即使在调用rbind函数时,insertRow函数的性能也很好。用户还通过绘制图表展示了这种性能差异。

文章最后,用户提到了一个与在数据框末尾添加行相关的问题,并指出这个问题可能与使用tibble而不是基本的R数据框有关。他们表示无法通过上述方法向tibble中添加行。

0