R如何将具有不同长度的数字向量转换为具有固定长度的二进制向量

时间:2015-05-29 21:16:22

标签: r

如何转换

1,1,0,0,1,1,0,0,1,0,0
1,1,0,0,0,0,0,0,0,0,0
0,0,1,0,0,0,0,0,0,0,1

进入这个:

na

如果索引不存在,我认为我可以通过添加na来读取我的数据。

然后,将每个na替换为零,将每个filters = {sex: 'Male', state: 'Oregon'}替换为一个Users.find(filters)。 但我不知道如何,我搜索到类似的代码,我没有找到

2 个答案:

答案 0 :(得分:3)

你可以这样做:

lapply(z,tabulate,nbins=max(unlist(z)))

[[1]]
 [1] 1 1 0 0 1 1 0 0 1 0 0

[[2]]
 [1] 1 1 0 0 0 0 0 0 0 0 0

[[3]]
 [1] 0 0 1 0 0 0 0 0 0 0 1

其中z是向量列表:

z <- list(c(1,2,5,6,9),c(1,2),c(3,11))

答案 1 :(得分:1)

我不确定你的原始数字是什么存储的,但这是一个解决方案,假设它是一个向量列表:

nums <-list(
  c(1,2,5,6,9),
  c(1,2),
  c(3,11)
)

maxn <- max(unlist(nums))

lapply(nums, function(x) {
  binary <- numeric(maxn)
  binary[x] <- 1
  binary
})