[英]Convert from factor to numeric a column in data.frames within a list
这是我的两个列表和相关代码的示例:
df1 = data.frame(a = c(1,1,1,2,3,3,4,4,5,6,6,7,8,9,9,10))
df2 = data.frame(a = c(1,2,2,2,3,4,5,5,6,6,7,8,9,9,10,10,11))
lst = list(df1, df2)
lst_table = lapply(lst, function(x) data.frame(table(x$a)))
> class(lst_table[[1]]$Var1)
[1] "factor"
> class(lst_table[[2]]$Var1)
[1] "factor"
由于我的代码目的,我需要列表中每个data.frame中的Var1
列都是数字向量。
从如何在不损失信息的情况下将因子转换为整数\\数字开始? 我将以下代码应用于单个data.frames并有效:
> df1$a = as.numeric(levels(df1$a))[df1$a]
> df2$a = as.numeric(levels(df2$a))[df2$a]
> class(df1$a)
[1] "numeric"
> class(df2$a)
[1] "numeric"
但是如何将以上内容应用于列表?
我试过了:
lst_table = lapply(lst_table, function(y) {y$Var1 = as.numeric(levels(y$Var1))[y$Var1]})
但它不起作用。
有什么建议吗? 谢谢
我认为问题在于您在第二个lapply
中的函数仅返回数字因子水平的向量,而不是整个data.frame
。 我相信以下应该起作用:
foo <- function(y) {
y$Var1 <- as.numeric(levels(y$Var1))[y$Var1]
return(y)
}
lst_table <- lapply(lst_table, foo)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.