在字符和数字之间操作向量时保持尾随零

Keep trailing zeros when manipulating vector between character and number

我觉得这应该是显而易见的,但我没有看到。我有一个数据框,我需要使用存储为字符的数字的列名重新排序。例如,names(df) 生成 c("1.5", "1.51", "1.0")。我的方法是提取名称、转换为数字、排序、转换为字符、传递给 R 索引。

x<-c("1.5", "1.51", "1.0")

y<-as.numeric(x)

1.50 1.51 1.00 #它用额外的 0 填充它,但我认为我可以接受。

z<-sort(y)

1.00 1.50 1.51 #没有惊喜...

as.character(z)

“1”“1.5”“1.51”

我想保留相对于原始输入向量或来自 as.numeric 的填充输出向量的尾随 0。

假设您有以下 df:

df <- data.frame("a", "b", "c")
names(df)<- c("1.5", "1.51", "1.0")

> df
  1.5 1.51 1.0
1   a    b   c

我们可以简单地获取列的顺序并按这样的顺序调用它们

df[,order(as.double(names(df)))]

 1.0 1.5 1.51
1   c   a    b

这允许您保留列名称的原始格式