Используя эти данные
your_data = structure(list(x1 = structure(c(2L, 1L, 2L), .Label = c("n",
"y"), class = "factor"), x2 = structure(c(1L, 1L, 2L), .Label = c("n",
"y"), class = "factor"), x3 = structure(c(1L, 1L, 1L), .Label = "y", class = "factor"),
x4 = structure(c(1L, 1L, 2L), .Label = c("n", "y"), class = "factor"),
x5 = structure(c(1L, 1L, 2L), .Label = c("n", "y"), class = "factor"),
x6 = structure(c(2L, 2L, 1L), .Label = c("n", "y"), class = "factor")), .Names = c("x1",
"x2", "x3", "x4", "x5", "x6"), class = "data.frame", row.names = c(NA,
-3L))
Это согласует выход вы просите:
cbind(names(your_data)[1], names(your_data)[-1])
# [,1] [,2]
# [1,] "x1" "x2"
# [2,] "x1" "x3"
# [3,] "x1" "x4"
# [4,] "x1" "x5"
# [5,] "x1" "x6"
Это матрица, но вы можете легко конвертировать в кадр данных с as.data.frame
. Вы также можете его функционировать на основе номера столбца, который вы хотите в первой позиции.
single_combn = function(vec, pos) {
cbind(vec[pos], vec[-pos])
}
Используйте пример:
single_combn(names(your_data), 1)
# [,1] [,2]
# [1,] "x1" "x2"
# [2,] "x1" "x3"
# [3,] "x1" "x4"
# [4,] "x1" "x5"
# [5,] "x1" "x6"
single_combn(names(your_data), 3)
# [,1] [,2]
# [1,] "x3" "x1"
# [2,] "x3" "x2"
# [3,] "x3" "x4"
# [4,] "x3" "x5"
# [5,] "x3" "x6"
Может быть 'reshape2 :: плавятся (your_data, id.vars = "x1")'? Я немного смущен тем, что вы хотите совершить с вашими значениями 'y' и' n' – Gregor
Или, может быть, просто 'cbind (names (your_df) [1], names (your_df) [- 1])'? – Gregor
Theyre просто пример того, что внутри каждого x [i] –