R数据帧具有不同的列长度

ada*_*888 1 r

我有一个10行的数据帧

df <- c(1:10)
Run Code Online (Sandbox Code Playgroud)

如何将另一列添加到只有5行的数据框?

df2 <- c(1:5)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

tim*_*ffe 12

我会在这里给出一些小指示.有关入门材料的几个链接,请参阅Tyler的回答几个问题: 将data.frame列格式从字符转换为因子

1)您正在制作的对象c()称为向量,这是R中最特殊的对象 - 最基本和最有用的对象.

2)A data.frame是一种list列表中所有元素作为列粘在一起并且长度必须相同的类型.列可以是不同的数据类型(classES)

3)lists是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
Run Code Online (Sandbox Code Playgroud)

有不同的方法可以回到这些元素mylist,例如

    mylist$vec1
    mylist[1]
    mylist[[1]]
    mylist["vec1"]
    mylist[["vec1"]]
Run Code Online (Sandbox Code Playgroud)

而且可能更多!通过搜索"R初学者教程"找到一个教程并通过它获得力量.玩得开心!


Tyl*_*ker 7

我知道有两种方法可以得到你所要求的但是这可能不是其他人指出的问题的最佳方法.我要告诉你的是我自己不会使用(我会选择最有可能像Tim所示的列表选项).

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
Run Code Online (Sandbox Code Playgroud)