将列表中data.frames中的列从因子转换为数值

将列表中data.frames中的列从因子转换为数值,r,list,dataframe,type-conversion,numeric,R,List,Dataframe,Type Conversion,Numeric,下面是我的两个列表和相关代码的示例: 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]]$

下面是我的两个列表和相关代码的示例:

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]})
但它不起作用

有什么建议吗?
谢谢

我认为问题在于第二个
lappy
中的函数只返回数值因子级别的向量,而不是整个
数据。frame
。我认为以下措施应该有效:

foo <- function(y) {
  y$Var1 <- as.numeric(levels(y$Var1))[y$Var1]
  return(y)
}

lst_table <- lapply(lst_table, foo) 

foo每个数组中的数字是否总是相同的,或者它们是否都是5然后都是10?我的真实数据。我的真实列表中的帧在长度和观察类型上不同。thanksok,它们的长度是相同的还是可以同时不同?不,它们的长度可以同时不同,例如df1=22380行和df2=11654行,列表中包含df1和df2。我的想法那时行不通