r - 是否有更有效/更干净的方法来设置 eval(parse(paste0( 设置?

标签 r get eval

有时我的代码会根据某些变量 ID 引用特定数据集。然后我一直在使用 paste0 创建代码行,然后使用 eval(parse(...)) 该行来执行代码。随着代码长度的增加,这似乎变得草率了。有没有更简洁的方法来获取动态数据引用?

例子:

dataset <- "dataRef"

execute <- paste0("data.frame(", dataset, "$column1, ", dataset, "$column2)")
eval(parse(execute))

但是现在想象一个场景,1000行代码会调用dataRef,有时需要改成dataRef2或dataRefX。

最佳答案

结合 Jack Maney 和 G.Grothendieck 的评论:

最好将要通过变量访问的数据框存储在列表中。可以使用 get 从名称向量创建列表:

mynames <- c('dataRef','dataRef2','dataRefX')
# or mynames <- paste0( 'dataRef', 1:10 )
mydfs <- lapply( mynames, get )

然后你的例子变成:

dataset <- 'dataRef'
mydfs[[dataset]][,c('column1','column2')]

或者您可以使用 lapplysapply 或循环一次处理它们:

mydfs2 <- lapply( mydfs, function(x) x[,c('column1','column2')] )

关于r - 是否有更有效/更干净的方法来设置 eval(parse(paste0( 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518273/

相关文章:

R:在字符串中调用对象

r - 如何重命名 cbind/aggregate 中的变量?

PHP curl : CURLOPT_URL, CURLOPT_POST 和 CURLOPT_POSTFIELDS

Javascript AJAX 包含带有 eval 的文件

javascript - JSON/JavaScript - 通过传递索引和属性名称获取值

r - 如何叠加两个geom_bar?

r - 用于矩阵和 image() 或 heatmap() 的分箱数据

javascript - 如何在闭包中创建新变量

php - 如何在mysql中用一个查询从两个不同的表中选择两条记录

forms - 为什么在表单提交中传递Google Analytics(分析)值?