假设我有一份清单
mylist <- list(5, 7, 9, 16)
我想建立一个函数来计算列表对象和之前的对象之间的差异(在这个例子中,7-5=2,9-7=2,16-9=7)。
myfunction <- function(myvalue, myvalue_minus1){
myvalue - myvalue_minus1
}
# Example
myresult <- myfunction(7, 5)
> myresult
[1] 2
我想计算所有列表对象之间的差异,所以我在列表上循环函数。
但是,如何表示我希望myvalue_minus1
始终是列表的前一个值(例如,当value_i == [[2]]
时,如何获得循环来检索myvalue_minus1 == [[1]]
?
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
我试过
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添加了所需的输出
发布于 2022-06-11 12:34:07
试试这个函数
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
https://stackoverflow.com/questions/72584250
复制相似问题