Извините, это не совсем то, что вы спросили, но я думаю, что может быть другой способ получить то, что вы хотите.
Во-первых, если векторы имеют разную длину, данные на самом деле не являются табличными, не так ли? Как насчет просто сохранить его в разные файлы CSV? Вы можете также попробовать форматы ascii, которые позволяют хранить несколько объектов ( json , XML ).
Если вы чувствуете, что данные действительно являются табличными, вы можете добавить в NA:
> x = 1:5
> y = 1:12
> max.len = max(length(x), length(y))
> x = c(x, rep(NA, max.len - length(x)))
> y = c(y, rep(NA, max.len - length(y)))
> x
[1] 1 2 3 4 5 NA NA NA NA NA NA NA
> y
[1] 1 2 3 4 5 6 7 8 9 10 11 12
Если вам абсолютно необходимо сделать data.frame
с неравными столбцами, вы можете подорвать чек на свой страх и риск:
> x = 1:5
> y = 1:12
> df = list(x=x, y=y)
> attributes(df) = list(names = names(df),
row.names=1:max(length(x), length(y)), class='data.frame')
> df
x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 <NA> 6
7 <NA> 7
[ reached getOption("max.print") -- omitted 5 rows ]]
Warning message:
In format.data.frame(x, digits = digits, na.encode = FALSE) :
corrupt data frame: columns will be truncated or padded with NAs