我正在使用匹配运算符从单独的数据框中获取矩阵中出现的值.但是,生成的矩阵的值按照它们出现在数据帧中的顺序而不是原始矩阵中的值.有没有办法使用匹配运算符保留原始矩阵的顺序?
这是一个简单的例子:
vec=c("b","a","c"); vec
df=data.frame(row.names=letters[1:5],values=1:5); df
df[rownames(df) %in% vec,1]
Run Code Online (Sandbox Code Playgroud)
这会产生数据框中出现> [1] 1 2 3的顺序"a" "b" "c".但是,我想生成>[1] 2 1 3哪个是它们出现在原始向量中的顺序.
谢谢!
我正在重命名数据框中的大多数变量,我的方法并没有给我留下太深刻的印象.
因此,SO上的任何人是否有更智能或更快的方式,而下面仅使用基数?
data(mtcars)
# head(mtcars)
temp.mtcars <- mtcars
names(temp.mtcars) <- c((x <- c("mpg", "cyl", "disp")),
gsub('^', "baR.", setdiff(names (mtcars),x)))
str(temp.mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp : num 160 160 108 258 360 ...
$ baR.hp : num 110 110 93 110 175 105 245 62 95 123 …Run Code Online (Sandbox Code Playgroud)