如何通过在两个向量上应用函数来创建数据框

时间:2017-07-04 21:30:46

标签: r

我有两个不同大小的字符向量,比如a和b,我想形成一个新数据帧(df)的行名和列名。

如果我有一个带有2个参数的函数,每个向量中的一个元素,它将数据放入数据帧,我该如何创建它?

我已经尝试过查看map2,但它需要两个参数大小相同,而且我不太清楚如何使用apply函数。

2 个答案:

答案 0 :(得分:0)

这是一个带有连接输入字符串

的函数的示例
#DATA
a = letters[1:5]
b = letters[7:9]

#FUNCTION
foo = function(string1, string2){
    paste(string1, string2, sep = "")
}

#Create a dataframe with input vectors and function
setNames(object = data.frame(sapply(a, 
                    function(x) sapply(b,
                       function(y) foo(x, y))),
                row.names = b),
         nm = a)
#   a  b  c  d  e
#g ag bg cg dg eg
#h ah bh ch dh eh
#i ai bi ci di ei

答案 1 :(得分:0)

以下是使用tidyverse

的选项
library(tidyverse)
crossing(a, col1 = b) %>%
      unite(val, a, col1, sep="", remove = FALSE) %>% 
      spread(a, val)
# A tibble: 3 x 6
#   col1     a     b     c     d     e
#* <chr> <chr> <chr> <chr> <chr> <chr>
#1     g    ag    bg    cg    dg    eg
#2     h    ah    bh    ch    dh    eh
#3     i    ai    bi    ci    di    ei

数据

a <- letters[1:5]
b <- letters[7:9]