求助:在R中使用moveMe函数将数据框最后一行移至顶部的问题
解决R中数据框行移动问题及报错处理
报错原因
你写的r("Deidentified")是错误写法——R中不存在名为r()的函数,这是触发报错的直接原因。另外需要注意:原moveMe函数是专门为移动列设计的(它依赖列名names(data)进行逻辑处理),直接传入行相关参数完全不匹配函数的设计逻辑。
简便解决方案:直接用行索引重组数据框
不需要修改现有函数,通过行索引直接重组数据框,就能快速将最后一行移到顶部:
# 组合最后一行 + 前n-1行(n为数据框总行数) dataframe <- dataframe[c(nrow(dataframe), 1:(nrow(dataframe)-1)), ]
可选方案:修改moveMe函数适配行移动
如果一定要沿用moveMe的逻辑处理行,可以修改函数,将操作对象从列名替换为行索引:
# 适配行移动的moveMe版本 moveMe_rows <- function(data, tomove, where = "last", ba = NULL) { temp <- setdiff(1:nrow(data), tomove) x <- switch( where, first = data[c(tomove, temp), ], last = data[c(temp, tomove), ], before = { if (is.null(ba)) stop("must specify ba row index") if (length(ba) > 1) stop("ba must be a single integer") data[append(temp, values = tomove, after = (match(ba, temp)-1)), ] }, after = { if (is.null(ba)) stop("must specify ba row index") if (length(ba) > 1) stop("ba must be a single integer") data[append(temp, values = tomove, after = (match(ba, temp))), ] }) x } # 使用示例:将最后一行移到顶部 dataframe <- moveMe_rows(dataframe, nrow(dataframe), "first")
内容的提问来源于stack exchange,提问作者Madison Rea
相关产品推荐
相关产品推荐

