r - 使用 lapply 修改列表中包含的 xts 的数据

标签 r list lapply xts

我正在尝试更改列表中包含的所有 xts 的第一个数据,但我似乎无法弄清楚 lapply 执行此操作的语法如何。我尝试过:

b = lapply(a, function(a) a[1,]=1)

但这会删除所有其他行的数据。有谁知道寻址第一个数据并修改它的正确语法。

谢谢

最佳答案

您的内部函数返回 a[1,]=1因此,您没有完整的 xts已存储。

像这样使用:

b <- lapply(a, function(a) { a[1,] = 1; a })

另一种方法是使用[<- (匿名作业):

b <- lapply(a, `[<-`, 1, TRUE, 1)

library(microbenchmark)
library(xts)

data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')

a <- rep(list(sample.xts), 2000)

microbenchmark(assign = lapply(a, function(a) { a[1,] = 1; a }),
               anon_assign = lapply(a, `[<-`, 1, TRUE, 3))

Unit: milliseconds
        expr      min       lq     mean   median       uq       max neval
      assign 33.50660 39.90533 58.75338 43.74316 88.39256 128.15991   100
 anon_assign 29.95665 32.37879 44.80245 34.11000 38.87301  97.35795   100

因此,匿名分配版本要快得多。

关于r - 使用 lapply 修改列表中包含的 xts 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407483/

相关文章:

r - R中避免嵌套ifelse语句的方法

r - 修改和拆分 R 数据框中的行名称

python - 将单键字典列表转换为单个字典

python - 如何避免在 python 程序的输出中打印 None 列表

html - 响应列表创建新列

xml - lapply 在 xml 对象列表上

r - 使用 R 中的 sf 将美学映射到 LINESTRING 几何图形

r - 定义因子时发出警告:不赞成重复使用因子水平

r - 打印数据帧列表中的第 N 行

r - 在列表中排序数据框