【发布时间】:2019-03-25 15:30:44
【问题描述】:
当尝试将数据框转换为类似于嵌套字典的列表时,我尝试使用以下命令:
df = data.frame(col1 = c('a', 'b'), col2 = c(1, 2))
df[,1] = as.character(df[,1])
ls1 = apply(df, 1, as.list)
print(ls1)
但是,现在 ls1 中 col2 的值似乎被转换为字符:
class(ls1[[2]]$col2)
# [1] "character"
这种解决方法有效,但我很好奇是否有人知道,为什么结果与以前的代码不同?
ls2 = as.list(df[1,])
for(i in 2:nrow(df)){
ls2 = list(ls2, as.list(df[i,]))
}
print(ls2)
class(ls1[[2]]$col2)
# [1] "numeric"
【问题讨论】:
-
最好不要使用
apply,因为它首先会转换为matrix。试试split(df, seq_len(nrow(df))) -
@IceCreamToucan 我不确定我明白你的意思,thole 体操是以 JSON 形式获取
df,例如:{"list":[{"col1":"a","col2":1},{"col1":"b","col2":2}]}不知何故......(抱歉,我很抱歉解释问题)