【问题标题】:Unpacking a list returned from function to multiple variables via mutate通过 mutate 将函数返回的列表解包到多个变量
【发布时间】:2020-06-26 17:01:18
【问题描述】:

假设我正在使用来自library(vader) 的情绪分析器 vader

对于给定的字符串,它返回一个具有各种属性的命名字符向量。例如,

> get_vader("How are you doing?")
                                         compound       pos       neu       neg but_count 
        0         0         0         0         0         0         1         0         0 

我想为我的 data.frame 中的给定列创建一个 vader 分数,但我想通过一次调用“解压”pos、neu 和 neg 值,而不是必须调用该函数三次对于同一个变量。

例子:

test = data.frame(a = "how are you doing today?")
test %>% mutate(vader_pos = get_vader(a)['pos'], 
vader_neg = get_vader(a)['neg'], 
vader_neu = get_vader(a)['neu']) 

如何避免调用get_vader 函数三次,而只需将所有三个变量同时解压到相应的列?

【问题讨论】:

  • 我没有vader。请您dput(get_vader(a)) 让我有一些工作要做吗?
  • >dput(get_vader(test$a)) c(0, 0, 0, 0, 0, compound = 0, pos = 0, neu = 1, neg = 0, but_count = 0 )

标签: r dplyr


【解决方案1】:

试试这个:

library(vader)
#Data
test = data.frame(a = "how are you doing today?",b='Hello you')
#Create dataframe with results
df <- as.data.frame(do.call(rbind,sapply(test,get_vader)))
  V1 V2 V3 V4 V5 compound pos neu neg but_count
a  0  0  0  0  0        0   0   1   0         0
b  0  0  0  0  1        0   0   0   0         0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2020-01-27
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多