如何使用R原生管道重置数据框的连续行名?
如何用R原生管道重置数据框的连续行号?
问题场景
先看这个最小示例:
df <- data.frame(x = c(10, NA, 30, 40, 50), y = c(10, 20, NA, 40, 50)) df <- df |> na.omit() |> `colnames<-`(c("You", "Me"))
执行后得到的数据框行号是不连续的:
> df You Me 1 10 10 4 40 40 5 50 50
我们需要把行号重置为从1开始的连续序号,虽然单独执行rownames(df) <- NULL可以实现,但希望像修改列名那样,用R原生管道完成这个操作。
解决方案
方法1:沿用修改列名的思路,用rownames<-函数
和修改列名的写法一致,直接在管道链中调用rownames<-并传入NULL:
df <- df |> na.omit() |> `colnames<-`(c("You", "Me")) |> `rownames<-`(NULL) # 查看结果 df
输出结果:
You Me 1 10 10 2 40 40 3 50 50
方法2:用set_rownames函数(更易读)
R的stats包自带set_rownames函数,语法更直观,适合管道操作:
df <- df |> na.omit() |> `colnames<-`(c("You", "Me")) |> set_rownames(NULL) # 查看结果 df
运行后同样会得到行号连续的数据框。
内容的提问来源于Stack Exchange,提问作者Thomas Philips
相关产品推荐
相关产品推荐

