[英]Subtracting list elements from another list in R
我有兩個列表,我想用另一個列表元素明智地減去一個列表元素,以便復制 Matlab 函數bsxfun(@minus, lt, lt2)
。 這兩個列表如下所示(編輯:現在可以在沒有 pracma 包的情況下使用):
# Code
# First list
lt = c(list())
# I use these lines to pre-dim the list...
lt[[1]] = c(rep(list(1)))
lt[[2]] = c(rep(list(1)))
# ... such that I can add matrices it this way:
lt[[1]][[1]] = matrix(c(3),nrow=1, ncol=1,byrow=TRUE)
lt[[2]][[1]] = matrix(c(1),nrow=1, ncol=1, byrow=TRUE)
# Same with the second list:
lt2 = c(list())
lt2[[1]] = c(rep(list(1)))
lt2[[2]] = c(rep(list(1)))
lt2[[1]][[1]] = matrix(c(2,2,2),nrow=3, ncol=1,byrow=TRUE)
lt2[[2]][[1]] = matrix(c(1,1,1),nrow=3, ncol=1,byrow=TRUE)
逐元素減法意味着lt2
的元素的每一行將被對象lt
的相應元素減去,即 lt2[[1]][[1]] 每行減去 3,得到 t(c( -1 -1 -1)).... 和 lt2[[2]][[1]] = t(c(0,0,0)) by 1 ... 列表結構對我來說很重要保留在結果中。
現在我嘗試使用lapply(lt2,"-",lt)
但它不起作用。 有什么建議么?
我懷疑您正在尋找類似這樣的骨架代碼,它按元素減去 2 個列表...
x <- list(1,2,3)
y <- list(4,5,6)
mapply('-', y, x, SIMPLIFY = FALSE)
但如前所述,您需要 2 個相同的列表(或者至少 R 的回收算法必須有意義),例如...
z <- list(4,5,6,7,8,9)
mapply('-',z,x,SIMPLIFY = FALSE)
您可能正在尋找這樣的東西,從列表的每個成員中減去一個常數......
mapply('-',y,2, SIMPLIFY= FALSE)
我想通了 - 我在這個問題上有另一個錯誤:/
將第二類更改為.numeric 有效
lt3 = lapply(lt2[[1]],"-",as.numeric(lt[[1]]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.