Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对两个不相同的向量进行相同排序_R_String_Vector_Syntax - Fatal编程技术网

R 对两个不相同的向量进行相同排序

R 对两个不相同的向量进行相同排序,r,string,vector,syntax,R,String,Vector,Syntax,我有一个向量,如下所示: avector <- c("outcome", "city", "year", "as.factor(educ)", "age", "log(area)", "peopleinhouse") avector我认为您的方法很好,可以创建一个公式对象并使用all.vars。您可以使用match和order以与svector相同的

我有一个向量,如下所示:

avector <- c("outcome", "city", "year", "as.factor(educ)", "age", "log(area)", "peopleinhouse")

avector我认为您的方法很好,可以创建一个公式对象并使用
all.vars
。您可以使用
match
order
以与
svector
相同的顺序获取它们

test <- as.formula(paste(avector[1],paste(avector,collapse = " + "), sep = " ~ "))
tmp <- all.vars(test)
avector[order(match(tmp, svector))]

#[1] "outcome" "as.factor(educ)" "city" "year" "age" "peopleinhouse" "log(area)"

获取
tmp
的另一种方法是使用regex并使用与上述相同的
match
过程

tmp <- gsub('.*\\(|\\)', '', avector)

tmp谢谢你的回答。我想我可能无法正确地解释我想要什么(我将进行编辑)。或者你的答案有错。无论如何,想法是保持两个向量的原样(或恢复它们的原样),除了顺序。你需要在子集时更改最后一部分。请参阅更新的答案。
test <- as.formula(paste(avector[1],paste(avector,collapse = " + "), sep = " ~ "))
tmp <- all.vars(test)
avector[order(match(tmp, svector))]

#[1] "outcome" "as.factor(educ)" "city" "year" "age" "peopleinhouse" "log(area)"
avector[match(svector, tmp)]
tmp <- gsub('.*\\(|\\)', '', avector)