[英]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.