我有两个不同长度的向量x和y。假设
X = c('a','b','c','d','e')
Y = c('x','y','z')
我有一个参数alpha,它将设置在0和1之间我想以概率的方式合并这两个向量。这是一个函数,它从向量xα中提取时间的百分比,从y中提取时间的剩余部分。例如,如果alpha设置为0.9,则合成向量r可以是
R = a,x,b,c,d,y,e,z
注意向量的前部分有很多来自x的元素,因为alpha很高。在R中有快速的方法吗?我使用Perl中的数组和队列来完成这项工作,我发现这很麻烦。而且,我不必担心下次运行时顺序是否不同,因为它本身就是概率的。
我需要保持每个向量x和y的顺序。
注意a,b,c,d而x,y,z是有序的。
最佳答案
在输出中保留向量的顺序并建立@dickoa的尝试:
x <- c('a','b','c','d','e')
y <- c('x','y','z')
prop_x <- 0.9
prop_y <- 1 - prop_x
r <- sample(c(x, y), prob = c(rep(prop_x, length(x)), rep(prop_y, length(y))))
# find indices that are x and substitute x in (guaranteed to be in order)
r[r %in% x] <- x
r[r %in% y] <- y
[1] "a" "x" "y" "b" "c" "d" "e" "z"
关于r - 如何在R中概率合并两个向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17282930/