基于其他数据帧中的索引值在R中进行选择性索引



我有一个向量和一个数据帧:

vec <- rnorm(100) 
df <- data.frame(factor = c(3, 5, 8), start = c(1, 30, 60), end = c(29, 59, 100)

所以数据帧看起来是这样的:

factor start  end
1      3     1   29
2      5    30   59
3      8    60  100

我想将因子作为10的幂应用于从开始到结束的索引箱。所以vec[0:29]将乘以10^3,vec[20:59]10^5和vec[60:100]10^8。

我的真实数据集要大得多,有更多的因素,但这就是它的要点

基本R方法:

do.call(rbind, 
Map(function(x, y, z) data.frame(factor = x, vec = vec[y:z]), 
df$factor, df$start, df$end)) -> result
head(result)
#  factor         vec
#1      3 -0.56047565
#2      3 -0.23017749
#3      3  1.55870831
#4      3  0.07050839
#5      3  0.12928774
#6      3  1.71506499

编辑

也许你正在寻找这个-

result <- vec * 10^rep(df$factor, df$end - df$start + 1)

数据

set.seed(123)
vec <- rnorm(100) 
df <- data.frame(factor = c(3, 5, 8), start = c(1, 30, 60), end = c(29, 59, 100))

最新更新