在字符和数字之间操作向量时保持尾随零
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
这允许您保留列名称的原始格式
我觉得这应该是显而易见的,但我没有看到。我有一个数据框,我需要使用存储为字符的数字的列名重新排序。例如,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
这允许您保留列名称的原始格式