我有一个不同长度向量1s和2s的列表,我试图根据nchar
和身份,即1, 2, c(1,1), c(2,2), c(2,1), c(1,2)
来提取向量。我的问题是确定包含nchar > 1
组合c(1,1), c(2,2), c(2,1), c(1,2)
的向量。
#dummy code
`T1,T2` <- 1
`T2,T1` <- 2
`T2,T3` <- c(2,1)
`T3,T2` <- c(2,2)
`T3,T4` <- c(1,1)
`T4,T4` <- c(1,2)
lst <- list(`T1,T2`=`T1,T2`, `T2,T1`=`T2,T1`, `T2,T3`=`T2,T3`, `T3,T2`=`T3,T2`, `T3,T4`=`T3,T4`, `T4,T4`=`T4,T4`)
single <- lst[nchar(lst)==1] # only lists with nchar==1
multiple <- lst[nchar(lst) > 1] # only lists with nchar > 1
# identify single lists which contain 1s and 2s
single_1s <- single[single==1] # single vectors for 1s
single_2s <- single[single==2] # single vectors for 2s
我如何对我的示例中的多个列表执行相同的操作?
尝试识别包含任何组合c(1,1), c(2,2), c(2,1), c(1,2)
的多个列表,例如
multiple[multiple==c(1,1)] # Does not work
任何指针都将受到高度赞赏,谢谢
答案 0 :(得分:1)
您可以创建所有需要匹配的向量的list
。然后使用lapply/sapply
和==
将indxlst
的每个元素与multiple
匹配
indxlst <- list(c(1,1), c(2,2), c(2,1), c(1,2))
lapply(indxlst, function(x)
multiple[sapply(multiple, function(y) all(y==x))])
如果您需要count
sapply(indxlst, function(x) sum(sapply(multiple,
function(y) all(y==x))))