假设我有一个包含两行三列的数据框:
struct vec3 {
double* base;
double& x() { return *base; }
double& y() { return *(base+1); }
double& z() { return *(base+2); }
};
struct mat3 {
double values[9];
vec3 operator[](size_t s) { return vec3{values+3*s}; }
};
有没有一种方法可以将第一行中的日期按日期顺序添加到向量中?
在这种情况下:
y()
答案 0 :(得分:0)
我认为这可以解决问题:
names(df) <- names(sort(df[1,]))
答案 1 :(得分:0)
我们可以使用
names(df)[order(as.Date(unlist(df[1, ])))]
#[1] "B" "C" "A"
如果要用于重新排序数据框
df[order(as.Date(unlist(df[1, ])))]
# B C A
#1 2019-03-21 2019-03-25 2019-04-08
#2 2019-03-08 2019-04-28 2019-04-01
答案 2 :(得分:0)
如果您希望每一行的列名顺序,则为:
v <- t(apply(df,1,function(x) names(df)[order(as.Date(x))]))
给予
> v
[,1] [,2] [,3]
[1,] "B" "C" "A"
[2,] "B" "A" "C"
答案 3 :(得分:0)
我们可以使用setcolorder
中的data.table
library(data.table)
i1 <- setDT(df)[1, order(as.IDate(unlist(.SD)))]
setcolorder(df, i1)
df
# B C A
#1: 2019-03-21 2019-03-25 2019-04-08
#2: 2019-03-08 2019-04-28 2019-04-01