Re: [问题] list赋值 & matrix资料选择

楼主: andrew43 (讨厌有好心推文后删文者)   2017-07-13 09:49:35
试试这个
没有什么高深的部份,就是三个向量逐列塞入 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
作者: samex4x4 (Same)   2017-07-13 10:29:00
谢谢a大!!!!这个写法很简洁漂亮啊!!!
作者: x88776544pc (龙飞五丈原)   2017-07-13 11:52:00
用 mapply 也不错, 省掉 rbind 会快一点

Links booklink

Contact Us: admin [ a t ] ucptt.com