【发布时间】:2016-12-22 19:33:53
【问题描述】:
我有重复性的任务,即提取列表的一部分并将它们保存到一个新的变量名中。
我可以使用aaa_report <- original[["aaa"]],并且我有一个名为aaa_report 的新变量,它是列表变量original 中的aaa 部分
现在我想自动化这个重复的任务:
aaa_report <- original[["aaa"]]
bbb_report <- original[["bbb"]]
ccc_report <- original[["ccc"]]
...
我有一个名为 dept 的单独“字符”列表变量,其中包含所有名称 dept <- c("aaa", "bbb", "ccc", "...")
我尝试使用sapply 并收到此错误。
sapply(dept, function(x) x"_report" <- original[[x]])
错误:“sapply(dept, function(x) x"_report""
我已经尝试了所有apply 家族和for loop 都没有运气。
for(x in dept){
x"_report" <- original[[x]]
}
我是 R 和一般编程的初学者,所以任何建议都会有很大帮助。
【问题讨论】:
-
为什么不将它们保留在列表中并在需要时引用它们呢?这似乎是一种更合理的方式。请参阅 gregor 在this post 上的回答,了解一些运行命名列表元素的有用方法。
-
稍后我将使用列表中的各个部分以不同的方式组合
-
如果你真的想这样做(将东西保存在列表中几乎总是最好的)使用
get(paste0(x, "_report")) -
如上面 2 个 cmets 所述,做一个列表和保留一个列表,这样会更好。您可能还想查看函数
split,它将为您服务。之后,在您的列表中直接使用lapply或sapply进行所有分析
标签: r for-loop rstudio lapply sapply