r - 如何将 R 函数应用于每一行并组合结果
问题描述
我有一个带有文本数据的数据框,其中一列包含感兴趣的文本,其他列是与此文本相关的元数据。
text metadata_1 metadata_2
x abc 123
y def 456
z ghi 789
对于单行,我有一个函数:
- 通过 googlelanguager 包通过 Google Natural Language API 运行文本,该包返回一组包含各种 NLP 结果(实体、句子、令牌等)的列表
- 将返回的“实体”列表对象存储在数据框中
- 将实体结果与分析文本的元数据相结合(因此每个实体只有一行,并且元数据字段重复)
get_entities <- function(x) {
# run text through google nlp api with gl_nlp()
nlp_result <- x["text"] %>%
gl_nlp()
# store entities results in dataframe
entities <- as.data.frame(nlp_result[["entities"]])
# bind text info with entities into for the analyzed text
bind_cols(x, entities)
}
输出类似于:
text metadata_1 metadata_2 entity entity_type
x abc 123 Joe PERSON
x abc 123 Chicago LOCATION
x abc 123 World Series EVENT
但我想对文本数据集中的每一行执行相同的操作:分析文本字段,从 get_nlp() 列表输出中分离实体结果,并将这些结果连接回相应的文本元数据。然后,理想情况下,将单个结果连接到一个位置。
text metadata_1 metadata_2 entity entity_type
x abc 123 Joe PERSON
x abc 123 Chicago LOCATION
x abc 123 World Series EVENT
y def 456 2002 DATE
y def 456 New York LOCATION
z ghi 789 2016 DATE
我一直无法确定迭代我的数据集并组合结果的最佳方法。有没有一种方法最适合将函数中的数据集组合为for
循环的一部分apply
?
解决方案
您可以为每一行apply
使用函数并组合结果。get_entities
result <- do.call(rbind, apply(df, 1, get_entities))
推荐阅读
- django - 为什么我不能打开到 Django Rest API 的 websocket 连接
- javascript - JS按元素字段值过滤嵌套数组
- c - c语言数学库编译时出错(pow)
- python - 试图在 python 3 Tkinter UI 中使用变量时卡住了
- javascript - 如何使用钩子在reactjs中一起渲染嵌套组件
- winapi - 在 Rust 语言中使用 winapi SetClipboardData
- google-colaboratory - Google Colab 是否停止提供免费 RAM?
- ios - 转换不适用于 SwiftUI 中的路由器
- python - 如何从 Python 中的另一个函数调用列表?
- c# - 即使在更新到 .net 框架 4.7 后,Visual Studio 仍显示旧的目标 .net 框架