说我有两个向量。
a <- c(1,5)
b <- c(2,3,4,6)
我想从这两个向量创建一个向量,使得'a'中新向量中的位置为红色,'b'为蓝色,结果
c <- c('red','blue','blue','blue','red','blue')
我认为可能使用rep会有所帮助,但是例如基于a
和b
的代表中的某种ifelse?
答案 0 :(得分:4)
怎么样
cols <- rep(NA,length(a)+length(b))
cols[a] <- "red"
cols[b] <- "blue"
cols
# [1] "red" "blue" "blue" "blue" "red" "blue"
答案 1 :(得分:3)
以下是stack
的选项。使用vector
list
获取mget
个stack
个对象,以data.frame
创建transform
,factor
'ind'列到{{1} } labels
为'red','blue',在order
'值'之后获取'ind'。
d1 <- transform(stack(mget(c('a', 'b'))), ind = factor(ind, labels = c('red', 'blue')))
as.character(d1$ind[order(d1$values)])
#[1] "red" "blue" "blue" "blue" "red" "blue"
正如@Frank所说,使用这种方法,可以sort
出两个以上的载体
答案 2 :(得分:0)
与@MattTyers相比,这可能是一个更通用的解决方案:
cols <- sort(c(a,b))
cols[cols %in% a] <- "red"
cols[cols %in% b] <- "blue"
cols
# [1] "red" "blue" "blue" "blue" "red" "blue"