R dataframe с различной длиной столбца - PullRequest
1 голос
/ 13 февраля 2012

У меня есть фрейм данных с 10 строками

df <- c(1:10)

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

df2 <- c(1:5)

Спасибо за помощь.*

Ответы [ 2 ]

12 голосов
/ 13 февраля 2012

Я приведу несколько небольших указателей здесь. См. Ответ Тайлера на несколько вопросов назад для пары ссылок на материалы для начала работы: преобразование формата столбца data.frame из символьного в коэффициент

1) Объекты, которые вы создаете с помощью c(), называются векторами, и это особый вид объектов в R - самый базовый и полезный вид.

2) data.frame - это разновидность list, где все элементы списка склеены в виде столбцов и должны иметь одинаковую длину. Столбцы могут быть разных типов данных (class es)

3) list s - это самый универсальный тип объектов в R - элементы списка могут быть любыми - любого размера, любого класса. Похоже, это то, что вы просите.

Так, например:

    mylist <- list(vec1 = c(1:10), vec2 = c(1:5))
    mylist
    $vec1
     [1]  1  2  3  4  5  6  7  8  9 10
    $vec2
     [1] 1 2 3 4 5

Существуют разные способы вернуться к элементам mylist, например,

    mylist$vec1
    mylist[1]
    mylist[[1]]
    mylist["vec1"]
    mylist[["vec1"]]

и, вероятно, больше! Найдите учебное пособие, выполнив поиск «Учебное пособие для начинающих по R» и просмотрите его. Веселись!

6 голосов
/ 13 февраля 2012

Есть два подхода, которые я знаю, чтобы получить то, что вы просите, НО, это, возможно, не лучший подход к проблеме, как указывали другие.То, что я собираюсь показать вам, я бы сам не использовал (я бы выбрал опцию списка, скорее всего, как показывает Тим).

df <- data.frame(var=1:10)  #notice I created a data.frame vs. the vector you called
new.col <- c(1:5)

#METHOD 1
df$new.col <- c(new.col, rep(NA, nrow(df)-length(new.col)))  #keep as integer
#METHOD 2
df$new.col2 <- c(new.col, rep("", nrow(df)-length(new.col))) #converts to character
df                                         #look at it
str(df)                                    #see what's happening to the columns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...