我有两个大的、有序的整数列表。我希望在hello
的[i]
位置处的整数length
等于bye
的[i]
位置处的整数length
。
这里是一个简化的可复制示例,用来模拟我的数据集:
c1<- c(0,1,0,1,1,1,0,0) |> as.integer()
c2<- c(0,1,0) |> as.integer()
c3<- c(1,1,1,0,0,0,0,0,0) |> as.integer()
c4<- c(0,1,0,1,0,0,0,1,0,1) |> as.integer()
c5<- c(0,1,0,1,0,0,0,0) |> as.integer()
c6 <- c(1,1,1,0,0) |> as.integer()
hello<- list(c1, c2, c3)
bye<- list(c4,c5,c6)
列表输出:
hello
[[1]]
[1] 0 1 0 1 1 1 0 0
[[2]]
[1] 0 1 0
[[3]]
[1] 1 1 1 0
bye
[[1]]
[1] 0 1 0 1 0 0 0 1 0 1
[[2]]
[1] 0 1 0 1 0 0 0 0
[[3]]
[1] 1 1 1 0 0
我希望扩展的相关列表元素的值与0相加。每个列表元素的期望输出如下所示:
hello[[2]]
[1] 0 1 0 0 0 0 0 0
bye[[2]]
[1] 0 1 0 1 0 0 0 0
到目前为止,我尝试了一个带有append语句的for循环,但是我无法让它正常工作。
我猜想lapply或purrr::map可能会提供一个更简洁的解决方案,但我仍在努力理解R中的函数式编程。非常感谢任何帮助。
\
length<-`。小问题 - 我更喜欢在这里(几乎总是)使用
Map()而不是
mapply()- 在这种情况下输出没有区别,但当我的输入发生变化时,
mapply()`会决定将我的结果简化为矩阵,这让我感到困惑。 - SamR