2
我試圖更改列表中包含的所有xt的第一個數據,但我似乎無法弄清楚lapply
的語法是怎麼樣的去做這個。我曾嘗試過:使用lapply來修改包含在列表中的一個xts的數據
b = lapply(a, function(a) a[1,]=1)
但是這會刪除所有其他行的數據。有沒有人知道解決第一個數據並修改它的正確語法。
感謝
我試圖更改列表中包含的所有xt的第一個數據,但我似乎無法弄清楚lapply
的語法是怎麼樣的去做這個。我曾嘗試過:使用lapply來修改包含在列表中的一個xts的數據
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
因此,匿名分配的版本是多少更快。
非常好,它的工作。謝謝! –
@NicolásVargas如果答案有幫助,請將其標記爲已回答。 – m0nhawk