r - 将逻辑运算符表与向量组合以生成组合列表
问题描述
我有一个如下所示的逻辑表:
Var1 Var2 Var3
FALSE FALSE FALSE
FALSE TRUE FALSE
TRUE FALSE TRUE
TRUE TRUE TRUE
等等
和一个包含字符串的向量:
例如c('a', 'b', 'c')
其中字符串的长度与逻辑表中的列数匹配。
仅在 BASE R 中,我如何才能将输出作为列表获得,使得输出看起来像:
$1 [1] character(0) # empty
$2 [1] "b"
$3 [1] "a" "c" # TRUE positions matched to vector positions
$4 [1] "a" "b" "c"
实际上,复制 plyr 包调用mlply
例如使用plyr包的代码
myset <- c('a', 'b', 'c')
n<-length(myset)
logicaltable <- expand.grid(replicate(n, list(c(F,T))))
mlply(logicaltable, function(...) { myset[c(...)] })
解决方案
您可以使用以下代码行在 Base R 中执行此操作:
apply(df, 1, function(x) c('a', 'b', 'c')[x])
这实际上是c('a', 'b', 'c')
通过数据框中的每一行对向量进行子集化(意味着每一行都被视为向量)并返回一个列表。例如,对于第二行,会发生这种情况:
c('a', 'b', 'c')[c(F, T, F)]
[1] "b"
推荐阅读
- apache-spark - 如何减少 spark 2.3 中的存储内存?
- java - 根据身高安排学生并确定未正确站立的学生人数
- typescript - 使用类表达式/值作为类型
- node.js - 多个 AWS Lambda 是否可以为单个 HTTP 请求提供服务?
- excel - 为 SFTP 位置中的 excel 文件自动执行宏
- c++ - 使用换行符打破c ++中的循环
- python - 在 LinkedIn 上抓取工作机会时遇到的困难
- r - 从 R 中的两个日期列生成日期范围
- d3.js - 如何为 d3.js 地球标记添加高度,模仿图钉?
- terminal - ANSI 终端将字符一层一层叠加