看板 R_Language 關於我們 聯絡資訊
試試這個 沒有什麼高深的部份,就是三個向量逐列塞入 matrix,再逐欄變成 list, 最後就會是一整個 list 了。 # 建假資料 seqno <- c(1, 2) name <- c("aa", "bb") type <- list(c("A1", "A2"), c("B1", "B2")) # x 為所求 x <- apply(rbind(seqno, name, type), 2, as.list) x x[[1]] x[[1]]$seqno # 同 x[[1]][[1]] x[[1]]$name # 同 x[[1]][[2]] x[[1]]$type # 同 x[[1]][[3]] ※ 引述《samex4x4 (Same)》之銘言: : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 入門(寫過其他程式,只是對語法不熟悉) : : [問題敘述]: : 十分基礎的幾個問題...Orz : 1. : 我想要創建list的型態長這樣 : list[[1]] : $seq_no : [1] '0001' : $name : [1] '水果' : $type : [1] 'A' 'B' 'C' : list[[2]] : $seq_no : [1] '0002' : $name : [1] '肉類' : $type : [1] 'B','C' : .... : 現在我手邊有seq_no,name,type 的vector : (07/13更新:type會是一個長度和seq_no,name相同的list,裡面包不同長度的vector : 我的問題是 我要怎麼給list按照如上的順序寫入資料? : 我可以這樣寫接forloop去做↓↓ : list[[1]]$seq_no <- seqno[1] : list[[1]]$name <- name[1] : list[[1]]$type <- type[[1]] : list[[2]]$seq_no <- seqno[2] : list[[2]]$name <- name[2] : list[[2]]$type <- type[[2]] : 但是我有沒有辦法一次性的叫出list[[1]]['seq_no'] list[[2]]['seq_no'].... : 以前用lapply(list, '[[', 1) 可以看到這個值 但要怎麼寫進去沒有頭緒Orz : 謝謝大家) : 想要每個寫入給list[[1]] list[[2]]...... : 目前寫到這邊就不太確定要怎麼把內部資料寫進去了 : test <- vector(mode = 'list', length = length(seq_no)) : 要怎麼給每個list[[i]] 寫入資料? : 我知道用forloop可以寫進去 但感覺蠢翻了... : 2. : 我的資料長這樣 : c('A','B','C') : 另外有一筆選擇資料的matrix : [1,] T,F,F : [2,] F,F,T : [3,] F,T,T : [4,] F,F,F : [5,] T,T,T : 想要輸出另一個matrix為 : [1,] A,NA,NA : [2,] NA,NA,C : [3,] NA,B,C : [4,] NA,NA,NA : [5,] A,B,C : 不知道要怎麼寫出來? : [程式範例]: : : : [環境敘述]: : : 請提供 sessionInfo() 的輸出結果, : 裡面含有所有你使用的作業系統、R 的版本和套件版本資訊, : 讓版友更容易找出錯誤 : : [關鍵字]: : list, matrix -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.113.175 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1499910578.A.CD3.html
samex4x4: 謝謝a大!!!!這個寫法很簡潔漂亮啊!!! 07/13 10:29
x88776544pc: 用 mapply 也不錯, 省掉 rbind 會快一點 07/13 11:52