2016-07-22 87 views
0

假設我有一個列表(在我的情況的元素列表中的數量是可變的),如何將列表中的每個元素作爲R中另一個函數的參數傳遞?

tmp=c('X1','X2','X3','X4') 

我想通過每個元素像這樣擴大電網功能:

tmp1=expand.grid(X1=c(0,1),X2=c(0,1),X3=c(0,1),X4=c(0,1)) 

其中每個元素可以取值0和1.我怎麼能做到這一點?

謝謝。

+0

@mackbox請注意,您獲得一些積分接受的答案,如果這是接受任何的答案前面的問題已經爲你工作的任何動機。 – lmo

回答

1

我們可以使用mget獲得在「TMP」 vectorlist元素的值,然後用expand.grid包裹。

expand.grid(mget(tmp)) 

或者,如果這些都沒有對象,但我們需要的列名與expand.grid創建,然後將矢量c(0,1)list,通過「TMP」的length複製它,做expand.grid並設置列名「tmp目錄」(與setNames

setNames(expand.grid(rep(list(0:1), length(tmp))), tmp) 
# X1 X2 X3 X4 
#1 0 0 0 0 
#2 1 0 0 0 
#3 0 1 0 0 
#4 1 1 0 0 
#5 0 0 1 0 
#6 1 0 1 0 
#7 0 1 1 0 
#8 1 1 1 0 
#9 0 0 0 1 
#10 1 0 0 1 
#11 0 1 0 1 
#12 1 1 0 1 
#13 0 0 1 1 
#14 1 0 1 1 
#15 0 1 1 1 
#16 1 1 1 1 
+0

@mackbox我不確定我是否按照你的評論。如果「X1」已被定義爲對象,則可以使用第一個選項。 – akrun

相關問題