假设我有一个名为ages
的向量,并且我将向量的值绑定到一个极限:
# Create vector
ages <- c(1:7427) # This is not what my vector is actually assigned as btw, it has a lot of random floats in reality.
# Set limits
min_HB <- 11.68987
max_HB <- 11.81083
# Limit vector
HB_ages <- sapply(ages, function(y) min(max(y,min_HB),max_HB))
HB_ages
的范围是从1
到length(HB_ages)
,但我仍然想了解原始向量的值的索引是什么。有办法做到这一点吗?
我们可以在命名为vector
的上stack
stack(setNames(HB_ages, ages))
或者使用矢量化方法
data.frame(ind = ages, val = pmin(pmax(ages, min_HB), max_HB))
这对我来说似乎是一个非常简单的问题。如果我错了,请纠正我。
这是你的年龄矢量(略有修改(
ages <- round(rnorm(100, 32, 15))
ages
[1] 37 31 2 33 15 20 41 38 71 47 50 40 64 32 54 28 62 38 42 24 39 22 32 29
[25] 26 27 32 50 33 11 22 15 21 5 43 17 45 51 47 54 15 13 21 29 13 21 33 23
[49] 40 24 20 36 29 35 42 54 30 53 32 48 39 46 20 62 49 41 35 44 50 56 17 43
[73] 36 22 38 30 19 14 40 26 27 50 36 32 36 51 41 25 58 45 27 45 30 44 9 29
[97] 43 19 41 5
这是你的极限:
min_HB <- 11.68987
max_HB <- 11.81083
这就是你所做的:
HB_ages <- sapply(ages, function(y) min(max(y,min_HB),max_HB))
索引与值的顺序相同。只需添加该顺序即可。
cbind(HB_ages, c(1:length(HB_ages)))
第二列是您需要的。对的