填充空矢量与另一个矢量的值给出相似(不相同)的值

时间:2016-11-22 17:31:59

标签: r vector

我有三个向量:

x1 <- c(0.000, 0.792, 1.451, 1.802, 2.551, 2.591, 3.991, 4.321)
x2 <- c(0.8, 2.6)
x3 <- c(3,6,-1)

我想创建另一个与x4长度相同的向量(x1)并填充x3的值,但3成为{{1}当6中的值非常接近6时,s和-1会变为x2,但如果它们相同则不一定。然后,x1看起来像这样:

x4

关键是 x1 x4 0.000 3 0.792 3 #0.8 in x2 is close to 0.792 x1, so this is the last place 3 appears 1.451 6 1.802 6 2.551 6 2.591 6 #2.6 in x2 is close to 2.591 x1, so this is the last place 6 appears 3.991 -1 4.321 -1 中的值需要接近x2中的值才能启动x1内的值之间的更改,而不一定完全相同,并添加在x3。如果x4中的值不接近x1,则x2中的值不会在x4中的值之间发生变化。

抱歉,我希望这是有道理的,但如果有人知道该怎么做,那就非常感激了!

1 个答案:

答案 0 :(得分:3)

您可以使用cut

x4 <- cut(x1, c(-Inf, x2, Inf), labels = x3, right = FALSE)

x4
# [1] 3  3  6  6  6  6  -1 -1
# Levels: 3 6 -1

注意,结果将是因素。

如果您想将它们转换为数字,可以使用:

as.numeric(levels(x4))[x4]

# [1]  3  3  6  6  6  6 -1 -1

关闭时,我认为你的意思是价值在区间内( - Inf到0.8; 0.8到2.6; 2.6到Inf)