Я хотел бы сделать декартову из двух векторов в R, что
- Возвращает
data.frame
с именами столбцов
- Возвращает символьные столбцы вместо факторов
Конечно, я могу сделать это в несколько строк кода.
df <- merge(1:3, letters[1:3], all = TRUE)
colnames(df) <- c("number", "letter")
df$letter <- as.character(df$letter)
str(df)
## 'data.frame': 9 obs. of 2 variables:
## $ number: int 1 2 3 1 2 3 1 2 3
## $ letter: chr "a" "a" "a" "b" ...
Но в идеале это должен быть однострочный код, такой как приведенный ниже код (который не дает желаемого результата).
df2 <- merge(c(number = 1:3),
c(letter = letters[1:3]), all = TRUE, stringsAsFactors = FALSE)
str(df2)
## 'data.frame': 9 obs. of 2 variables:
## $ x: int 1 2 3 1 2 3 1 2 3
## $ y: Factor w/ 3 levels "a","b","c": 1 1 1 2 2 2 3 3 3
У кого-нибудь есть однострочники, которые могли бы работать на этом пределе? Рады также принять решения dplyr
и data.table
. Идеальное решение показало бы, предоставить одну строку для каждого base
, dplyr
и data.table
.