r - R:生成一个列表,其中包含来自具有特定前缀的全局环境中的不同数量的元素
问题描述
我正在尝试生成一个列表,其中包含来自全局环境的带有前缀 ('nu_') 的元素(在本例中为整数,名为 'nu_1'、'nu_2'、...)。
但是,这些元素的数量可能会发生变化,因此我需要一种方法来根据它们的前缀动态获取所有相关元素并将它们组合成一个列表。
一些背景资料:
目标是让用户输入一些引用数据框中列名的字符串(公司名称)。我想要这个列表中所有这些列的总和。我使用以下 for 循环获得这些总和,并将它们分配给前缀为“nu_”的整数。
strings <- list("Amazon", "Google", "Facebook")
for (i in 1:length(strings)){
assign(paste0("nu_",i), sum(data[ grep(paste0("company_",strings[i]),colnames(data)) ]) )
}
也许有更好的方法来实现我的整体目标。
对我的问题的任何帮助将不胜感激!
解决方案
考虑使用apply family ( )构建总和列表l/s/vapply
以维护一个对象,而不是根据用户输入的许多单独对象。如果使用字符向量而不是 list with sapply
,则输出是一个命名列表。还考虑从向量中粘贴company_前缀:
# CHARACTER VECTOR OF THREE ITEMS
strings <- paste0("company_", c("Amazon", "Google", "Facebook"))
# EQUIVALENTLY:
strings <- paste0("company_", unlist(list("Amazon", "Google", "Facebook")))
sum_list <- sapply(strings, function(i) sum(data[,grep(i,colnames(data))]),
simplify=FALSE)
sum_list$company_Amazon
sum_list$company_Google
sum_list$company_Facebook
如果需要重命名nu前缀,请使用字符串setNames
序列:
sum_list <- setNames(sum_list, paste0("nu", seq_along(strings)))
sum_list$nu1
sum_list$nu2
sum_list$nu3
推荐阅读
- excel - 如果它包含 Excel 中的填充单元格,则计算列
- mysql - 计算用户使用的数据量(字节)
- sunburst-diagram - 如何使用 R 在旭日形图中自定义戒指尺寸?
- scala - 在 Spark 中,将数据集写入数据库时,保存操作需要一些预先假定的时间
- php - 无法使用 CURL (php) 获取 JSON
- android - getToken() -> BAD_AUTHENTICATION。帐户
- java - 禁用 log4j 2 异常(apache 的异常)
- html - 使用引导程序对齐项目的字段集未正确对齐
- javascript - JavaScript 检查互联网
- android - Android:在 ContentProvider 上下文中找不到处理 Intent 的 Activity