使用有条件地从其他向量生成的值生成矢量
问题描述:
说我有两个向量。使用有条件地从其他向量生成的值生成矢量
a <- c(1,5)
b <- c(2,3,4,6)
我想创建从该两个矢量的矢量,使得在新向量位置“a”为红色和“b”是蓝色的,导致
c <- c('red','blue','blue','blue','red','blue')
我认为可能是使用代表将有所帮助,但例如某种基于a
和b
的代表中的ifelse?
答
如何
cols <- rep(NA,length(a)+length(b))
cols[a] <- "red"
cols[b] <- "blue"
cols
# [1] "red" "blue" "blue" "blue" "red" "blue"
答
这里是stack
一个选项。获取在list
的vector
对象与mget
,stack
创建data.frame
,transform
的“IND”列factor
与labels
为“红”,“蓝”,得到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所述,用这种方法,2层以上的载体可sort
编出
+2
值得注意的是:这是迄今为止发布的唯一途径,将完全扩展到更多的媒介(超出了两个,a和b)。 – Frank
答
也许更通用的解决方案相比@MattTyers整齐之一:
cols <- sort(c(a,b))
cols[cols %in% a] <- "red"
cols[cols %in% b] <- "blue"
cols
# [1] "red" "blue" "blue" "blue" "red" "blue"
辉煌!我正在努力想出这一个。谢谢。 – Ahdee