这与我正在处理的家庭作业问题有关。我需要对一些矩阵执行数据操作,TA建议使用combn函数:
# what I'm starting with
a = c(1, 2)
b = c(NA, 4, 5)
c = c(7, 8)
# what I need to get
my_matrix
a b c
1 NA 7
1 NA 8
1 4 7
1 4 8
1 5 7
1 5 8
2 NA 7
2 NA 8
2 4 7
2 4 8
2 5 7
2 5 8
my_matrix是一个矩阵,包含a,b和c中元素的所有可能组合,列名为a,b和c。我理解combn()正在做什么,但不完全确定如何将其转换为上面显示的矩阵?
提前感谢您的帮助!
答案 0 :(得分:1)
expand.grid
是更好,更容易的方法。但您也可以使用combn
#STEP 1: Get all combinations of elements of 'a', 'b', and 'c' taken 3 at a time
temp = t(combn(c(a, b, c), 3))
# STEP 2: In the first column, only keep values present in 'a'
#Repeat STEP 2 for second column with 'b', third column with 'c'
#Use setNames to rename the column names as you want
ans = setNames(data.frame(temp[temp[,1] %in% a & temp[,2] %in% b & temp[,3] %in% c,]),
nm = c('a','b','c'))
ans
# a b c
#1 1 NA 7
#2 1 NA 8
#3 1 4 7
#4 1 4 8
#5 1 5 7
#6 1 5 8
#7 2 NA 7
#8 2 NA 8
#9 2 4 7
#10 2 4 8
#11 2 5 7
#12 2 5 8