【问题标题】:How do I insert 3 vectors in the same row of a dataframe?如何在数据框的同一行中插入 3 个向量?
【发布时间】:2016-05-05 10:57:04
【问题描述】:

我是 R 新手,但遇到了问题。我创建了一个“空”data.frame,因为在 R 中我不能这样做,我创建了一个向量来实现它,我会在完成脚本时删除它。

x <- c("aa", 0, 0, 0, "zz") #Vector to fulfill the dataframe (it will be deleted at the end of the script)       
df <<- rbind(x) #Creating a matrix. See: class(df)    
df <<- data.frame(df) #Converting the matrix into a data.frame 

但是现在我需要用三个向量来完成那个数据框:

a <- c("bb")       
b <- c(2, 3, 4)    
c <- c("yy")              

所需的输出是这样的数据框:

    X1  X2  X3  X4  X5

r1  aa  0   0   0   zz

r2  bb  2   3   4   yy

我试过这个:df &lt;- rbind(df, a, b, c) 但它不起作用...

有什么建议吗?

【问题讨论】:

标签: r vector dataframe


【解决方案1】:

根据你想要的输出,你可以试试这个:

library(dplyr)  # Gives %>%
dataF <- data.frame(X1 = "aa",
                    X2 = 0,
                    X3 = 0,
                    X4 = 0,
                    X5 = "zz",
                    stringsAsFactors = FALSE)

a <- c("bb")       
b <- c(2, 3, 4)    
c <- c("yy")

# setNames to simply use rbind()
newrow <- data.frame(a, t(b), c, stringsAsFactors = FALSE) %>% setNames(names(dataF))

rbind(dataF, newrow)

这给了你:

'data.frame':   2 obs. of  5 variables:
 $ X1: chr  "aa" "bb"
 $ X2: num  0 2
 $ X3: num  0 3
 $ X4: num  0 4
 $ X5: chr  "zz" "yy"

猜测你更想要的输出:

library(dplyr)
dataF <- data.frame(X1 = character(),
                    X2 = numeric(),
                    X3 = numeric(),
                    X4 = numeric(),
                    X5 = character(),
                    stringsAsFactors = FALSE)

a <- c("bb")       
b <- c(2, 3, 4)    
c <- c("yy")

newrow <- data.frame(a, t(b), c, stringsAsFactors = FALSE) %>% setNames(names(dataF))

rbind(dataF, newrow)

这给了你:

'data.frame':   1 obs. of  5 variables:
 $ X1: chr "bb"
 $ X2: num 2
 $ X3: num 3
 $ X4: num 4
 $ X5: chr "yy"

【讨论】:

    【解决方案2】:

    也许,你可以这样做

    x <- c("aa", 0, 0, 0, "zz") 
    a <- c("bb")       
    b <- c(2, 3, 4)    
    c <- c("yy")   
    y <- c(a, b, c)
    rbind(r1 = x,r2 =  y)
    
    
    #   [,1] [,2] [,3] [,4] [,5]
    #r1 "aa" "0"  "0"  "0"  "zz"
    #r2 "bb" "2"  "3"  "4"  "yy"
    

    这是一个矩阵,把它作为一个数据框,你可以

    data.frame(rbind(r1 = x,r2 =  y))
    
    #   X1 X2 X3 X4 X5
    #r1 aa  0  0  0 zz
    #r2 bb  2  3  4 yy
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2022-01-23
      • 2017-11-02
      • 2011-10-21
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多