向量列表中向量元素的比率

柯南

我有一个带有列的数据框:

> head(df$lengths,5)
[[1]]
[1] "28"

[[2]]
[1] "33"

[[3]]
[1] "47" "37" "42" "41"

[[4]]
[1] "41" "39" "64" "54"

[[5]]
[1] "45" "22" "23"

我想对向量中的元素进行运算,以获得每个向量中element(i)与element(ik)的比率。如果由于element(ik)的索引无效而无法获得比率,则结果应为NA。所需的输出是这样的,其中我指定了k = 1:

[[1]]
[1] NA

[[2]]
[1] NA

[[3]]
[1] NA (37/47) (42/37) (41/42)

[[4]]
[1] NA (39/41) (64/39) (54/64)

[[5]]
[1] NA (22/45) (23/22)

至于k = 2:

[[1]]
[1] NA

[[2]]
[1] NA

[[3]]
[1] NA NA (42/47) (41/37)

[[4]]
[1] NA NA (64/41) (54/39)

[[5]]
[1] NA NA (23/45)

我对如何实现这一点几乎一无所知,我想执行一些循环,但是在R中,它似乎很复杂。请指教。

阿克伦

我们遍历list元件(lapply(..),iflength所述的list元素是1,我们返回“NA”或else由电流值和连接具有分割的下一个值NA我们将其转换numeric为原始list元素为character类。

 lapply(df$lengths, function(x) if(length(x)==1) NA
            else c(NA, as.numeric(x[-1])/as.numeric(x[-length(x)])))

更新

我们可以将lag/leadin函数dplyr/data.table用于大于1的k个值。

library(dplyr)
k <- 2
lapply(df$lengths, function(x) {x <- as.numeric(x)
               if(length(x)==1) NA 
                 else c(rep(NA,k), na.omit(lead(x,k)))/na.omit(lag(x,k))})
#[[1]]
#[1] NA

#[[2]]
#[1] NA

#[[3]]
#[1]       NA       NA 0.893617 1.108108

#[[4]]
#[1]       NA       NA 1.560976 1.384615

#[[5]]
#[1]        NA        NA 0.5111111

或者不使用任何包,我们就可以使用head/tail函数

lapply(lst, function(x) {x <- as.numeric(x)
               if(length(x)==1) NA 
               else c(rep(NA, k), tail(x, -k)/head(x,-k))})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中的向量列表-提取向量的元素

来自分类Dev

从列表向量中删除元素C ++

来自分类Dev

向量列表中的R和元素X

来自分类Dev

C ++:访问向量列表中的某些元素

来自分类Dev

转换特定向量中的列表元素

来自分类Dev

从列表向量中删除元素C ++

来自分类Dev

C ++:访问向量列表中的某些元素

来自分类Dev

在列表向量中的单个/多个列表中添加元素

来自分类Dev

检查向量的元素是否在列表的相应元素中

来自分类Dev

检查向量的元素是否在列表的相应元素中

来自分类Dev

R将向量中的每个元素变成列表列表

来自分类Dev

从向量中删除元素

来自分类Dev

向量中的编号元素

来自分类Dev

重复向量中的元素

来自分类Dev

如何根据向量元素在列表中的位置替换向量元素?

来自分类Dev

在 R 中的列表中添加向量(不是矩阵)中的元素

来自分类Dev

列表中向量的名称

来自分类Dev

连接列表中的向量

来自分类Dev

粘贴向量列表的多个元素

来自分类Dev

循环调用向量列表的元素

来自分类Dev

R中的元素向量和多个向量

来自分类Dev

循环向量(不循环向量中的元素)

来自分类Dev

在R中的嵌套列表的特定元素中搜索向量

来自分类Dev

如何删除嵌套在向量中的列表中的元素

来自分类Dev

R:根据因子向量合并列表中的元素

来自分类Dev

如何在列表的元素中存储多个向量?

来自分类Dev

R-替换向量列表中的元素

来自分类Dev

如何从列表中的多个向量中选择多个元素

来自分类Dev

在for循环内调用函数以删除向量(或列表)中的元素