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.我怎麼能做到這一點?
謝謝。
假設我有一個列表(在我的情況的元素列表中的數量是可變的),如何將列表中的每個元素作爲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.我怎麼能做到這一點?
謝謝。
我們可以使用mget
獲得在「TMP」 vector
爲list
元素的值,然後用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
@mackbox我不確定我是否按照你的評論。如果「X1」已被定義爲對象,則可以使用第一個選項。 – akrun
@mackbox請注意,您獲得一些積分接受的答案,如果這是接受任何的答案前面的問題已經爲你工作的任何動機。 – lmo