R:将as.list应用于数据框将数字转换为字符

时间:2019-03-25 15:30:44

标签: r list dataframe apply

当尝试将数据帧转换为类似于嵌套字典的列表时,我尝试使用以下命令:

 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"

1 个答案:

答案 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}]