r - 将标签应用到数据框列表的自定义函数
问题描述
我有一个数据框列表,我正在尝试创建一个函数,我可以将其应用于我的数据框列表,为数据框的变量提供标签。
# Sample Data Frame
data<-data.frame( Q1=c(1,1,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,1,1,1,NA,1,1,NA,NA,NA,NA,1,NA,NA,NA,NA,1,NA,1),
Q2=c(1,1,1,1,1,NA,NA,NA,NA,1,1,1,1,1,NA,NA,NA,1,1,1,NA,1,1,1,1,1,NA,NA,NA,1,1,1,1,1,1,1,NA,NA,NA),
Q3=c(1,1,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,1,1,1,NA,NA,NA,1,NA,NA,1,1,1,1,1,NA,NA,1),
Q4=c(1,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
region=c(1,2,1,1,1,2,1,2,2,1,2,NA,1,1,2,2,2,1,1,1,2,NA,2,1,1,1,2,2,2,NA,1,2,2,1,1,1,2,2,2)
)
data$region<-factor(data$region, levels=c(1,2), labels=c("ALL","Special"))
# list of data frames
df<- data
df$qq<-1
df2<- subset(df, region == 'ALL')
df$ss<-ifelse(df$region == 'ALL',1,NA)
lst<-list(df$qq, df$ss)
ldat<-list("ALL" = df, "other" =df2)
#function for giving labels to data frame
conv_frac <- function(dataset,colnames,collabels) {
for( i in seq_along(ldat)){
ldat2[[i]][] <- lapply(names(ldat[[i]]), function(x) factor(ldat[[i]][[x]], labels = collabels[[x]]))
}
}
# applying function to my list of data frames
col_name <- c("Q1","Q2","Q3","Q4")
label <- c("asman","shakti","nakul","ram")
ldat1 <- conv_frac(dataset = ldat,colnames = col_name,collabels = label)
但无法为此创建函数
解决方案
将您的功能更改为:
conv_frac <- function(dataset,colnames,collabels) {
lapply(dataset, function(p) {
p[colnames] <- Map(function(x, y) factor(x, labels = y),
p[colnames], collabels)
p
})
}
然后,您可以将其应用于数据框列表:
# applying function to my list of data frames
col_name <- c("Q1","Q2","Q3","Q4")
label <- c("asman","shakti","nakul","ram")
ldat1 <- conv_frac(dataset = ldat,colnames = col_name,collabels = label)
ldat1
#$ALL
# Q1 Q2 Q3 Q4 region qq ss
#1 asman shakti nakul ram ALL 1 1
#2 asman shakti nakul <NA> Special 1 NA
#3 <NA> shakti <NA> <NA> ALL 1 1
#4 <NA> shakti <NA> <NA> ALL 1 1
#...
#...
#$other
# Q1 Q2 Q3 Q4 region qq
#1 asman shakti nakul ram ALL 1
#3 <NA> shakti <NA> <NA> ALL 1
#4 <NA> shakti <NA> <NA> ALL 1
#5 <NA> shakti <NA> <NA> ALL 1
#...
#...
推荐阅读
- javascript - 为什么我的 JSON 响应返回未定义?
- java - 我遇到错误,找不到解决方法
- matplotlib - matplotlit colorbar 标题挂在图外
- javascript - 如何在使用 twitter api 时修复 Brain.js 错误
- swift - 如何以编程方式将图像的大小调整为 NSImageView?
- css - R - 闪亮的 radioGroupButtons 在查看器中渲染效果不佳
- c# - 如何检查数据集中的数据是否更新并捕获更新的数据?C#
- r - 将累积数量添加到使用 facet_wrap 绘制的 geom_bar 图中
- c++ - 努力理解 C++ 模板实例化
- spring-boot - Google Cloud Trace 不使用 Sleuth 关联来自 Spring Boot 应用程序的日志