r - R:data.table-将变量添加到数据表列表中,其中包含列表中每个表的名称
问题描述
我目前正在使用 data.table 在 R 中工作,并尝试将变量“data_set”添加到包含列表中该项目名称的数据表列表中。
例如 - 表列表是 med、symp 和 care,我想将变量 data_set 添加到每个表中,其中在数据表 med 中,“data_set”将等于“med”,在数据表 symp 中,“data_set”将等于“症状”。我知道我可以为此使用 lapply,但我一直坚持如何将每个表的名称存储在“data_set”变量中。我知道它会变成这样......
tables<-c("med", "symp", "care")
tables_1<-lapply(mget(tables),function(x)x[, data_set:=…...])
如何在“data_set”变量中引用和存储每个数据表的名称?
解决方案
我建议你可以使用Map
而不是lapply
这里。
med <- data.table(a=1); symp <- data.table(b=1); care <- data.table(d=1)
tables <- c("med", "symp", "care")
tables_1 <- Map(function(x, nm) copy(x)[, data_set := nm], mget(tables), tables)
tables_1
# $med
# a data_set
# 1: 1 med
# $symp
# b data_set
# 1: 1 symp
# $care
# d data_set
# 1: 1 care
我使用copy
推断您的使用lapply
不需要副作用。如果没有copy
,您的全局环境变量 ( med
, symp
, care
) 也会添加该列。这可能是期望的和/或可接受的,在这种情况下删除copy
以减少内存占用。
推荐阅读
- vba - VBScript 语法:MS Word 合并字段
- reactjs - 从开关加载组件时,Material-UI Slider 不拖动
- python - 在代码中获取列表(而不是列表列表)
- reactjs - 具有 React Native 状态的 Redux 未更新
- macos - CPLEX Studio V20.10 无法在 mac os 上打开
- php - 如何在我的 Joomla 网站中删除由 zendesk 提供支持的实时聊天?
- android - Android 库发布配置
- android - 带有来自不同应用程序的任务和活动的 Android 后台堆栈
- google-bigquery - BigQuery 脚本:根据表列中包含的每一行运行 SQL 查询
- apache-spark - 火花 Ambari 2.7.4 上的 Hive