r - 重写为循环以在 R 中将相似数据帧中的选定变量设置为因子
问题描述
我有很多年的数据,每个数据都在一个相同的数据框中,我想将所有年份放入一个列表中,然后编写一个 for 循环而不是每年重复该命令。
#set dummies as factors (these dummies repeat across years)
mydummies<-c ('hru_i', 'ge_nonngsother_i','ge_sgt_i')
DF2012[,mydummies]<-lapply(DF2012[,mydummies],factor)
DF2013[,mydummies]<-lapply(DF2013[,mydummies],factor)
我试图将所有数据帧放在一个列表中,以便我可以运行一个循环,但它并没有改变数据帧......
df.list<- list(DF2012,DF2013)
#want to create a loop here
解决方案
嵌套lapply
将为此工作:
df.list <- lapply(df.list, function(d) {
d[mydummies] <- lapply(d[mydummies], factor)
d
})
这是一个可重现的示例,证明它有效:
df.list = list(a = head(mtcars), b = head(mtcars))
mydummies = c("cyl", "am")
sapply(df.list, sapply, class)
# a b
# mpg "numeric" "numeric"
# cyl "numeric" "numeric"
# disp "numeric" "numeric"
# hp "numeric" "numeric"
# drat "numeric" "numeric"
# wt "numeric" "numeric"
# qsec "numeric" "numeric"
# vs "numeric" "numeric"
# am "numeric" "numeric"
# gear "numeric" "numeric"
# carb "numeric" "numeric"
df.list <- lapply(df.list, function(d) {
d[mydummies] <- lapply(d[mydummies], factor)
d
})
# a b
# mpg "numeric" "numeric"
# cyl "factor" "factor"
# disp "numeric" "numeric"
# hp "numeric" "numeric"
# drat "numeric" "numeric"
# wt "numeric" "numeric"
# qsec "numeric" "numeric"
# vs "numeric" "numeric"
# am "factor" "factor"
# gear "numeric" "numeric"
# carb "numeric" "numeric"
推荐阅读
- jenkins - 是否可以为 jenkins github 组织构建设置构建丢弃选项?
- javascript - 如何防止操作覆盖覆盖材料表中的可编辑 onRowAdd 按钮?
- python - 如何替换目录中每个文件中的字符串
- c# - 启用可靠会话时 WCF ContractFilter 不匹配
- ruby-on-rails - 参数数量错误 - resque
- java - 以编程方式提取方法的内容
- bash - 需要在linux中运行命令并通过grep查找结果
- php - PHP多维数组,将重复键合并成新数组
- javascript - Mediarecoder 派生的 mp4 缺少持续时间元数据
- ajax - 当单击按钮删除但数据无法删除且 url 未显示 id 时我遇到问题