r:创建具有所有可能选项和变量组合数量的数据框 [英] r: create data frame with all possible options and number of variable combinations
问题描述
这个问题可能很明显,或者已经问过,但是我找不到解决方案:
This question might be obvious or asked already, but I can't find a solution:
我想创建一个包含所有可能组合(和数字)的数据框变量),使其看起来像下面的示例:
I want to create a data frame with all possible combinations (and number of variables) such that it looks like the following example:
dataframe <- data.frame(variable = 1:4,
a = c("gender", NA, NA, NA),
b = c("age", NA, NA, NA),
c = c("city", NA, NA, NA),
d = c("education", NA, NA, NA),
e = c("gender", "age", NA, NA),
f = c("gender", "city", NA, NA),
g = c("gender", "education", NA, NA),
h = c("age", "city", NA, NA),
i = c("age", "education", NA, NA),
j = c("city", "education", NA, NA),
k = c("gender", "age", "city", NA),
l = c("gender", "age", "education", NA),
m = c("gender", "city", "education", NA),
n = c("gender", "age", "city", "education"))
我的变量太多,因此,不值得写出来,我想避免错误。谢谢您的帮助!
I have too many variables, so it's not worth writing it out, and I want to avoid errors. Thank you for helping!
推荐答案
以下是 combn
的选项。获取变量名称的 vector
,遍历 vector
的序列,应用 combn将
与向量
上的 m
指定为循环的序列,转换为 data.frame
和 cbind
所有 list
元素在一起。 rowr
中的 cbind.fill
适用于 fill
与 NA
用于 list
元素的行数少于最大行 data.frame
Here is an option with combn
. Get the vector
of variable names, loop through the sequence of the vector
, apply the combn
on the vector
with m
specified as the sequence from the loop, convert to data.frame
and cbind
all the list
elements together. The cbind.fill
from rowr
is suitable to fill
with NA
for list
elements that have less number of rows than the maximum row data.frame
library(rowr)
res <- do.call(cbind.fill, c(fill = NA, lapply(seq_along(v1), function(i) {
m1 <- combn(v1, i)
if(is.vector(m1)) as.data.frame.list(m1) else as.data.frame(m1)})))
colnames(res) <- letters[seq_along(res)]
或按照@Moody_Mudskipper的建议,
Or as @Moody_Mudskipper suggested,
res1 <- do.call(cbind.fill, c(fill = NA, lapply(seq_along(v1), function(i) combn(v1, i))))
colnames(res1) <- letters[seq_len(ncol(res1))]
数据
data
v1 <- c('gender', 'age', 'city', 'education')
这篇关于r:创建具有所有可能选项和变量组合数量的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!