Как реплицировать столбец в фрейме данных?

#r

Вопрос:

Я пытаюсь скопировать столбец фрейма данных в тот же или новый фрейм данных. Мой фрейм данных df содержит только один столбец:

 col
1
2
3
4
5
 

Я надеюсь получить что-то подобное (другой/тот же фрейм данных, а не матрицу):

 col1 col2 col3 col4 col5
1    1    1    1    1
2    2    2    2    2
3    3    3    3    3
4    4    4    4    4
5    5    5    5    5
 

Я попытался создать новый фрейм данных с помощью new_df <- rep(df[,c(1)],5) , и я не понимаю, почему это не сработало.

Ответ №1:

Просто назначьте столбец

 df[paste0('col', 2:5)] <- df$col
 

-уптут

 > df
  col col2 col3 col4 col5
1   1    1    1    1    1
2   2    2    2    2    2
3   3    3    3    3    3
4   4    4    4    4    4
5   5    5    5    5    5
 

Или , если мы используем rep , ввод может быть list или data.frame вместо вектора, т. е. df[,1] приводит столбец data.frame к a vector , как по умолчанию drop = TRUE в data.frame . Вместо этого (если есть только столбец rep(df, 5) ) или если более одного подмножества столбцов как df[1] (- возвращает data.frame с одним столбцом) в качестве входных rep данных . Результатом будет набор list векторов, которые мы преобразуем в data.frame путем обертывания с data.frame

 data.frame(rep(df[1],5))
 

Или может также использовать replicate

 as.data.frame(replicate(5, df$col))
 

данные

 df <- structure(list(col = 1:5), class = "data.frame", row.names = c(NA, 
-5L))
 

Комментарии:

1. Можно ли было бы показать код rep() с list или data.frame ввода?