我试着再次提出问题,希望以更好的方式! 我想要一个结果数据帧,其中var1,var2,var3,var4,var5,var6,var7,var8,var9存在于每个模型中。然后可以不转换或转换9个变量中的每一个。
var <- c(paste0("var", 1:9), paste0("lnvar", 1:9))
df <- as.data.frame (t(combn(var, 9)))
df$name <- paste0("model", 1:nrow(df))
head(df)
V1 V2 V3 V4 V5 V6 V7 V8 V9 name
1 var1 var2 var3 var4 var5 var6 var7 var8 var9 model1
2 var1 var2 var3 var4 var5 var6 var7 var8 lnvar1 model2
3 var1 var2 var3 var4 var5 var6 var7 var8 lnvar2 model3
4 var1 var2 var3 var4 var5 var6 var7 var8 lnvar3 model4
5 var1 var2 var3 var4 var5 var6 var7 var8 lnvar4 model5
6 var1 var2 var3 var4 var5 var6 var7 var8 lnvar5 model6
从上面的代码中可以得到数千种型号。我的问题是例如model2,其中var 1出现两次。我可以使用的唯一模型是上面的model1。
所以我的问题是: 如何告诉R使所有模型中存在所有九个变量?
(就我的计算而言,我最终只能使用81个型号。) 到目前为止,这个公式有效: r =变量数; n =变量变换 组合的可能性= r ^ n,因此当r = 9,n = 2时,我得到9 ^ 2个可能性= 81种可能性非常适合。
我怀疑在考虑变量的名称时我遇到了困难,并且R中有一个我不知道的智能功能,或者它甚至很容易编写一个自制函数。 我只是看不到解决方案。 所以,如果你有任何线索我能做什么,我会非常满意。
答案 0 :(得分:1)
以下是我提出的建议:
# Set up 9 variables and one possible transformation for each of those 9 variables
var <- c(paste0("var", 1:9), paste0("lnvar", 1:9))
# Calculate popssible combinations
df <- as.data.frame(t(combn(var, 2)))
# Add column with model name
df$name <- paste0("model", 1:nrow(df))
> df
V1 V2 name
1 var1 var2 model1
2 var1 var3 model2
3 var1 var4 model3
4 var1 var5 model4
5 var1 var6 model5
6 var1 var7 model6
7 var1 var8 model7
8 var1 var9 model8
9 var1 lnvar1 model9
10 var1 lnvar2 model10
11 var1 lnvar3 model11
12 var1 lnvar4 model12
13 var1 lnvar5 model13
14 var1 lnvar6 model14
15 var1 lnvar7 model15
16 var1 lnvar8 model16
17 var1 lnvar9 model17
18 var2 var3 model18
19 var2 var4 model19
20 var2 var5 model20
21 var2 var6 model21
22 var2 var7 model22
23 var2 var8 model23
24 var2 var9 model24
25 var2 lnvar1 model25
26 var2 lnvar2 model26
27 var2 lnvar3 model27
28 var2 lnvar4 model28
29 var2 lnvar5 model29
30 var2 lnvar6 model30
31 var2 lnvar7 model31
32 var2 lnvar8 model32
33 var2 lnvar9 model33
34 var3 var4 model34
35 var3 var5 model35
36 var3 var6 model36
37 var3 var7 model37
38 var3 var8 model38
39 var3 var9 model39
40 var3 lnvar1 model40
41 var3 lnvar2 model41
42 var3 lnvar3 model42
43 var3 lnvar4 model43
44 var3 lnvar5 model44
45 var3 lnvar6 model45
46 var3 lnvar7 model46
47 var3 lnvar8 model47
48 var3 lnvar9 model48
49 var4 var5 model49
50 var4 var6 model50
51 var4 var7 model51
52 var4 var8 model52
53 var4 var9 model53
54 var4 lnvar1 model54
55 var4 lnvar2 model55
56 var4 lnvar3 model56
57 var4 lnvar4 model57
58 var4 lnvar5 model58
59 var4 lnvar6 model59
60 var4 lnvar7 model60
61 var4 lnvar8 model61
62 var4 lnvar9 model62
63 var5 var6 model63
64 var5 var7 model64
65 var5 var8 model65
66 var5 var9 model66
67 var5 lnvar1 model67
68 var5 lnvar2 model68
69 var5 lnvar3 model69
70 var5 lnvar4 model70
71 var5 lnvar5 model71
72 var5 lnvar6 model72
73 var5 lnvar7 model73
74 var5 lnvar8 model74
75 var5 lnvar9 model75
76 var6 var7 model76
77 var6 var8 model77
78 var6 var9 model78
79 var6 lnvar1 model79
80 var6 lnvar2 model80
81 var6 lnvar3 model81
82 var6 lnvar4 model82
83 var6 lnvar5 model83
84 var6 lnvar6 model84
85 var6 lnvar7 model85
86 var6 lnvar8 model86
87 var6 lnvar9 model87
88 var7 var8 model88
89 var7 var9 model89
90 var7 lnvar1 model90
91 var7 lnvar2 model91
92 var7 lnvar3 model92
93 var7 lnvar4 model93
94 var7 lnvar5 model94
95 var7 lnvar6 model95
96 var7 lnvar7 model96
97 var7 lnvar8 model97
98 var7 lnvar9 model98
99 var8 var9 model99
100 var8 lnvar1 model100
101 var8 lnvar2 model101
102 var8 lnvar3 model102
103 var8 lnvar4 model103
104 var8 lnvar5 model104
105 var8 lnvar6 model105
106 var8 lnvar7 model106
107 var8 lnvar8 model107
108 var8 lnvar9 model108
109 var9 lnvar1 model109
110 var9 lnvar2 model110
111 var9 lnvar3 model111
112 var9 lnvar4 model112
113 var9 lnvar5 model113
114 var9 lnvar6 model114
115 var9 lnvar7 model115
116 var9 lnvar8 model116
117 var9 lnvar9 model117
118 lnvar1 lnvar2 model118
119 lnvar1 lnvar3 model119
120 lnvar1 lnvar4 model120
121 lnvar1 lnvar5 model121
122 lnvar1 lnvar6 model122
123 lnvar1 lnvar7 model123
124 lnvar1 lnvar8 model124
125 lnvar1 lnvar9 model125
126 lnvar2 lnvar3 model126
127 lnvar2 lnvar4 model127
128 lnvar2 lnvar5 model128
129 lnvar2 lnvar6 model129
130 lnvar2 lnvar7 model130
131 lnvar2 lnvar8 model131
132 lnvar2 lnvar9 model132
133 lnvar3 lnvar4 model133
134 lnvar3 lnvar5 model134
135 lnvar3 lnvar6 model135
136 lnvar3 lnvar7 model136
137 lnvar3 lnvar8 model137
138 lnvar3 lnvar9 model138
139 lnvar4 lnvar5 model139
140 lnvar4 lnvar6 model140
141 lnvar4 lnvar7 model141
142 lnvar4 lnvar8 model142
143 lnvar4 lnvar9 model143
144 lnvar5 lnvar6 model144
145 lnvar5 lnvar7 model145
146 lnvar5 lnvar8 model146
147 lnvar5 lnvar9 model147
148 lnvar6 lnvar7 model148
149 lnvar6 lnvar8 model149
150 lnvar6 lnvar9 model150
151 lnvar7 lnvar8 model151
152 lnvar7 lnvar9 model152
153 lnvar8 lnvar9 model153
答案 1 :(得分:0)
x <- rep(list(c("","ln")),9)
x <- mapply(paste0, x, paste0("var",1:9), SIMPLIFY = FALSE)
x <- expand.grid(x,KEEP.OUT.ATTRS = FALSE, stringsAsFactors = FALSE)
str(x)
#'data.frame': 512 obs. of 9 variables:
# $ Var1: chr "var1" "lnvar1" "var1" "lnvar1" ...
# $ Var2: chr "var2" "var2" "lnvar2" "lnvar2" ...
# $ Var3: chr "var3" "var3" "var3" "var3" ...
# $ Var4: chr "var4" "var4" "var4" "var4" ...
# $ Var5: chr "var5" "var5" "var5" "var5" ...
# $ Var6: chr "var6" "var6" "var6" "var6" ...
# $ Var7: chr "var7" "var7" "var7" "var7" ...
# $ Var8: chr "var8" "var8" "var8" "var8" ...
# $ Var9: chr "var9" "var9" "var9" "var9" ...