首页 文章

使用mutate从命名向量输出值

提问于
浏览
0

我有1X2数据帧,其值为'sent1'和'sent2' .

test.df <- data.frame(sentence = c('sent1', 'sent2'))

我还有一个参考向量,其中包含2个句子和3个类别(a,b,c)组合的值 .

test.vec <- c(sent1_a = 1, 
         sent1_b = 0, 
         sent1_c = 1,
         sent2_a = 0,
         sent2_b = 1,
         sent2_c = 1)

我想创建一个看起来像这样的新df:

output.df <- data.frame(sentence = c('sent1', 'sent2'),
                    a = c(1,0),
                    b = c(0,1),
                    c = c(0,1))

output.df
#  sentence a b c
#1    sent1 1 0 0
#2    sent2 0 1 1

理想情况下,我想使用mutate根据我循环的相应句子从向量中选择相关值

results <- test.df %>%
           mutate(a = test.vec[[paste0(sentence, '_a')]])

但是,我收到了一个错误 .

mutate_impl(.data,dots)出错:评估错误:尝试在vectorIndex中选择多个元素 .

1 回答

  • 1

    您可以将 test.vec 重塑为您需要的输出:

    library(tidyverse)
    data.frame(test.vec) %>% 
        tibble::rownames_to_column() %>% 
        separate(rowname, c('sentence', 'vars')) %>% 
        spread(vars, test.vec)
    
    #  sentence a b c
    #1    sent1 1 0 1
    #2    sent2 0 1 1
    

相关问题