已经提出了类似的问题,但没有一个能够解决我的具体问题。我有一个.R
包含许多基本微积分的文件(“Mycalculus.R”),我需要将其应用于数据框的子集:每年的一个子集,其中“年”的模态是因子(yearA、yearB、yearC)而不是数值. 该文件生成一个新的数据框,我需要将其保存在 Rda 文件中。这是我希望代码看起来像一个for
循环(这个显然不起作用):
id <- identif(unlist(df$year))
for (i in 1:length(id)){
data <- subset(df, year == id[i])
source ("Mycalculus.R", echo=TRUE)
save(content_df1,file="myresults.Rda")
}
这是主要data.frame df的确切信息:
obs year income gender ageclass weight
1 yearA 1000 F 1 10
2 yearA 1200 M 2 25
3 yearB 1400 M 2 5
4 yearB 1350 M 1 11
以下是源文件“Mycalculus.R”的作用:它将许多基本微积分应用于称为“数据”的数据帧的列,并基于 df1 创建两个新数据帧 df1 和 df2。这是一个摘录:
data <- data %>%
group_by(gender) %>%
mutate(Income_gender = weighted.mean(income, weight))
data <- data %>%
group_by(ageclass) %>%
mutate(Income_ageclass = weighted.mean(income, weight))
library(GiniWegNeg)
gini=c(Gini_RSV(data$Income_gender, weight), Gini_RSV(data$Income_ageclass,weight))
df1=data.frame(gini)
colnames(df1) <- c("Income_gender","Income_ageclass")
rownames(df1) <- c("content_df1")
df2=(1/5)*df1$Income_gender+df2$Income_ageclass
colnames(df2) <- c("myresult")
rownames(df2) <- c("content_df2")
所以最后,我得到了两个这样的数据框:
Income_Gender Income_Ageclass
content_df1 .... ....
对于 df2:
myresult
content_df2 ....
但我需要将 df1 和 Rf2 保存为 Rda 文件,其中 content_df1 和 content_df2 的行名按子集给出,如下所示:
Income_Gender Income_Ageclass
content_df1_yearA .... ....
content_df1_yearB .... ....
content_df1_yearC .... ....
和
myresult
content_df2_yearA ....
content_df2_yearB ....
content_df2_yearC ....
目前,我的程序不使用任何循环并且正在完成这项工作,但很混乱。基本上代码是2500多行代码。(请不要向我扔西红柿)。
任何人都可以帮助我解决这个特定的要求吗?先感谢您。