R:动态地将数据帧传递给函数

时间:2016-05-15 12:48:12

标签: r function dataframe

我正在尝试动态地将一些数据帧传递给一个函数,该函数将返回每个数据帧的一些统计结果。目的是将统计结果并排绘制。我遇到的问题是,我将数据框分配给函数会导致传递的数据帧的名称而不是实际的数据帧本身。

例如,我的数据框名为construct 1,但代码似乎传递了名称construct 1

,而不是传递代表此构造的实际数据框。

任何人都可以看到如何解决此问题

# Get a list of all the dataframes in the workspace
my.dfs <- names(which(sapply(.GlobalEnv, is.data.frame))) 

# Filter to just the Alpha DataFrames
my.dfs <- as.data.frame(my.dfs) %>%
  filter(grepl('Alpha_', my.dfs)) %>% 
  mutate(my.table = as.character(my.dfs))

# Loop Through Each Table and get the Alpha Statistics
for (i in 1:nrow(my.dfs)){

  construct = my.dfs$my.table[i]
  construct_name = as.character(my.dfs$my.table[i])

  create_cronbach_summ(construct, construct_name)

}

最终结果将是

Construct Name
Statistic 1
Statistic 2
Statistic 3....

我收到的错误消息是:

 Error in UseMethod("select_") : 
  no applicable method for 'select_' applied to an object of class "character

1 个答案:

答案 0 :(得分:1)

查看deparse(susbtitute(x))以评估名称并传递真实的data.frame以进行进一步操作。强烈建议建立一个功能。 顺便说一句,您应该考虑使用列表,每个级别有一个data.frame / one个结果,并在sapply(mylist,FUN=function(element){element$part}sapply(mylist,FUN=function(element){create_cronback_summ(element)}时提取信息。