在创建新向量时,有没有一种方法可以从旧向量的索引中获取信息



假设我有一个名为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的范围是从1length(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)))

第二列是您需要的。对的

最新更新