【发布时间】:2015-11-09 22:42:12
【问题描述】:
我想创建一个函数来合并名称包含已定义字符串的数据帧。在以下示例中,myfun(A) 将合并名称包含“A”的数据帧,即A1 和A2,而将B1 排除在外。
A1=data.frame(id=paste0("id",1:10),var1=letters[sample(1:26,10)])
A2=data.frame(id=paste0("id",1:10),var2=LETTERS[sample(1:26,10)])
B1=data.frame(id=paste0("id",1:10),var3=letters[sample(1:26,10)])
我最好的尝试(不起作用):
myfun=function(my.pattern){
dfs=ls(,pattern=paste(my.pattern)) # Getting the list of dataframes whose name contains the pattern
merged_df=merge(dfs[1],dfs[2],by=id) # Merging those dataframes
return(merged_df)
}
【问题讨论】:
-
试试
Reduce(function(...) merge(..., by='id'), mget(ls(pattern='A\\d+'))) -
@akrun,当机立断!非常感谢
-
似乎是this的某种类型的欺骗