【发布时间】:2017-10-08 13:58:35
【问题描述】:
我的问题有两个。首先,给定这三个数据框:
df1 <- data.frame(k1 = runif(6, min=0, max=100),
k2 = runif(6, min=0, max=100),
k3 = runif(6, min=0, max=100),
k4 = runif(6, min=0, max=100))
df2 <- data.frame(k1 = runif(6, min=0, max=100),
k2 = runif(6, min=0, max=100),
k3 = runif(6, min=0, max=100),
k4 = runif(6, min=0, max=100))
df3 <- data.frame(k1 = runif(6, min=0, max=100),
k2 = runif(6, min=0, max=100),
k3 = runif(6, min=0, max=100),
k4 = runif(6, min=0, max=100))
我想使用这个函数重新格式化和重命名每个数据框的一部分:
samplelist<-c("k2", "k4")
draft_fxn<-function(x, obj_name){
x.selected<-x[,c(samplelist)] #select columns of choice
colnames(x.selected)[1:2]<-paste(obj_name, colnames(x.selected), sep="_") #rename columns so they include original data frame name
return(x.selected)
}
#Example run and output:
df2_final<-draft_fxn(df2, "df2")
#output from:
head(df2_final[1:2],)
> df2_k2 df2_k4
>1 5.240274 53.03423
>2 5.042926 34.78974
第一个问题:我怎样才能改变我的功能,这样我就不必输入'df2,“df2”'。在我的 draft_fxn 代码中,我想用输入数据框的名称替换“obj_name”。在我的示例中,它是“df2”。
第二个问题:如何循环遍历所有数据帧?也许,类似于这个 for 循环? 对象
for (file in objs){
out<-draft_fxn(file); return(out)
} #this doesn't work though.
【问题讨论】:
-
你最好从一开始就使用keeping a list of data.frames,而不是在变量名本身中放置一堆松散相关的变量和数据。
标签: r function loops dataframe