【发布时间】:2017-06-21 15:48:22
【问题描述】:
之前我需要按行拆分数据帧,现在我有一个包含 65 个数据帧的庞大列表。
df_list = split(df, list(df$group))
new_col_name = c("A", "B","group")
df_list = lapply(df_list, setNames, nm=new_col_name)
df_list = lapply(df_list, function(x) x[-1,])
我想将 A 列(跨列表中的所有数据框)转换为因子而不是数字。
>head(df_list)
$`0`
A B count
.3375E+03 .5295E+00 0
.3380E+03 .4412E+00 0
.3385E+03 .0123E+00 0
$`1`
A B count
.3370E+03 .4939E+00 1
.3375E+03 .5295E+00 1
.3380E+03 .5679E+00 1
$`2
A B count
.3370E+03 .4934E+00 2
.3375E+03 .5286E+00 2
.3380E+03 .5673E+00 2
等等
这里有一些可重现的数据(为简单起见,我将第一个变量转换为因子)。
test = data.frame(A = c(".3375E+03", ".3380E+03", ".3385E+03"),
B = c(.5295E+00 , .4412E+00, .0123E+00),
C = c(0,0,0))
我尝试了以下方法:
for (i in df_list){
i$A = as.numeric(as.character(i$A))
}
但不知何故,这实际上并没有分配给 df_list:
> str(df_list[[1]])
'data.frame': 549 obs. of 3 variables:
$ A : Factor w/ 551 levels ".3370E+03",".3375E+03",..: 2 3 4 5 6 7 8 9 10 11 ...
apply() 或 sapply() 可能有办法做到这一点,但我想不通。
【问题讨论】: