首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中循环列表时如何检索前一个list对象

在R中循环列表时如何检索前一个list对象
EN

Stack Overflow用户
提问于 2022-06-11 12:14:33
回答 1查看 24关注 0票数 1

假设我有一份清单

代码语言:javascript
运行
复制
mylist <- list(5, 7, 9, 16)

我想建立一个函数来计算列表对象和之前的对象之间的差异(在这个例子中,7-5=2,9-7=2,16-9=7)。

代码语言:javascript
运行
复制
myfunction <- function(myvalue, myvalue_minus1){
  myvalue - myvalue_minus1
}

# Example
myresult <- myfunction(7, 5)
> myresult 
[1] 2

我想计算所有列表对象之间的差异,所以我在列表上循环函数。

但是,如何表示我希望myvalue_minus1始终是列表的前一个值(例如,当value_i == [[2]]时,如何获得循环来检索myvalue_minus1 == [[1]]

代码语言:javascript
运行
复制
myvalue_list <- list()
for(value_i in 1:4){
  myvalue_list[[value_i]] <- myfunction(myvalue = value_i, myvalue_minus1)
}

# Desired output
> myvalue_list
[[1]]
[1] 5      # not sure if the first value should be 0 or 5

[[2]]
[1] 2

[[3]]
[1] 2

[[4]]
[1] 7

我试过

代码语言:javascript
运行
复制
myvalue_list <- list()
for(value_i in 1:4){
  myvalue_list[[value_i]] <- myfunction(myvalue = value_i, myvalue_minus1 = value_i[[i]] -1 ) # wrong
}

但这不管用。有什么建议吗?

编辑

myfunction函数只是为了制作一个易于复制的示例,我正在使用的函数做了一些其他的事情。因此,我只对解决标题中所述问题的答案感兴趣。

编辑2添加了所需的输出

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 12:34:07

试试这个函数

代码语言:javascript
运行
复制
myvalue_list <- list()
for(value_i in 2:4){
    myvalue_list[[value_i-1]] <- myfunction(myvalue = mylist[[value_i]],
    myvalue_minus1 = mylist[[value_i-1]])
}

myvalue_list

#> [[1]]
#> [1] 2
#> 
#> [[2]]
#> [1] 2
#> 
#> [[3]]
#> [1] 7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72584250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档