如何解决r中具有排序逻辑的操作向量
我有一个id向量ids
,一个分组变量group
和一个因子变量factor
,它的_
中的初始数字在ids
之前变量。
ids <- c("54_a","54_b","44_a","44_c")
group <- c(1,2)
factor <- c(54,44)
因此,54_a
和54_b
属于第一个因子54
。 44_a
和44_b
属于第二个因素44
。
写出输出的规则是:
- 当
id
属于第一个因子时,fixed[#]
应该是fixed[1]
。 - 当
id
属于第二个因素fixed[#]
时 应该是fixed[2]
。 - 对第1组和第2组(G1,G2)重复该过程。
(G1,54_a,fixed[1]) = 1.0; # 1 for factor 1 (G1,54_b,44_a,fixed[2]) = 1.0; # 1 for factor 2 (G1,44_c,fixed[2]) = 1.0; # 1 for factor 2
(G2,fixed[1]) = 1.0; # 1 for factor 1 (G2,fixed[2]) = 1.0; # 1 for factor 2 (G2,fixed[2]) = 1.0; # 1 for factor 2
有什么想法吗? 谢谢!
这是此post的简单版本。
解决方法
这是使用outer
的一种方法:
c(t(outer(paste0('G',group),ids,function(x,y) {
ind <- match(sub('_.*','',y),factor)
sprintf('(%s,%s,fixed[%s]) = 1.0',x,y,ind)
})))
#[1] "(G1,54_a,fixed[1]) = 1.0" "(G1,54_b,fixed[1]) = 1.0"
#[3] "(G1,44_a,fixed[2]) = 1.0" "(G1,44_c,fixed[2]) = 1.0"
#[5] "(G2,fixed[1]) = 1.0" "(G2,fixed[1]) = 1.0"
#[7] "(G2,fixed[2]) = 1.0" "(G2,fixed[2]) = 1.0"
我们在函数中传递id
和组,在match
的部分传递id
,以获得fixed#
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。