当尝试将数据帧转换为类似于嵌套字典的列表时,我尝试使用以下命令:
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"
答案 0 :(得分:2)
不是将数据转换为df=df.coalesce(1);
df = df.withColumn(inputCol,functions.monotonically_increasing_id());
的{{1}},而是apply
只能有一个类,请使用matrix
matrix
如果需要输出split
,则可以使用lst1 <- unname(split(df, seq_len(nrow(df))))
将数据集直接转换为JSON
JSON
基于与OP的对话,数据集以名为toJSON
的形式传递,需要转换为JSON格式
jsonlite::toJSON(df)
#[{"col1":"a","col2":1},{"col1":"b","col2":2}]