亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

R中的交織列表

R中的交織列表

ABOUTYOU 2019-09-26 14:36:38
假設我在R中有兩個列表,長度不一定相等,例如: a <- list('a.1','a.2', 'a.3')  b <- list('b.1','b.2', 'b.3', 'b.4')構造交錯元素列表的最佳方法是什么,一旦添加了較短列表的元素,則將較長列表的其余元素添加到末尾,例如:interleaved <- list('a.1','b.1','a.2', 'b.2', 'a.3', 'b.3','b.4')不使用循環。我知道mapply適用于兩個列表長度相等的情況。
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

在調查類似的問題,我碰到這個由格羅騰迪克的Gabor(即漂亮的解決方案@GGrothendieck?)某些情況下:

c(rbind(a,b))

ab都是列表,或者當ab都是向量時,這同樣有效。這不是OP問題的精確解決方案,因為當ab具有不同的長度時,它將回收較短序列的元素,并顯示警告。但是,由于此解決方案簡單而優雅,并且提供了一個非常相似的問題的答案-一個像我這樣的人的問題,他們因此找到了進入此頁面的方式-似乎值得補充。


查看完整回答
反對 回復 2019-09-26
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

interleave(a, b)# unlist(interleave(a, b))# [1] "a.1" "b.1" "a.2" "b.2" "a.3" "b.3" "b.4"interleave <- function(a, b) { 

  shorter <- if (length(a) < length(b)) a else b
  longer  <- if (length(a) >= length(b)) a else b

  slen <- length(shorter)
  llen <- length(longer)


  index.short <- (1:slen) + llen
  names(index.short) <- (1:slen)

  lindex <- (1:llen) + slen
  names(lindex) <- 1:llen


  sindex <- 1:slen
  names(sindex) <- 1:slen

  index <- c(sindex, lindex)
  index <- index[order(names(index))]

  return(c(a, b)[index])}


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關注
  • 606 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號