[英]R: apply as.list to data frame converts numeric to character
當嘗試將數據幀轉換為類似於嵌套字典的列表時,我嘗試使用以下命令:
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的值現在似乎已轉換為character:
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"
代替將數據轉換為matrix
和matrix
只能具有單個類的apply
,請使用split
lst1 <- unname(split(df, seq_len(nrow(df))))
如果我們需要JSON
輸出,則可以使用toJSON
將數據集直接轉換為JSON
。
jsonlite::toJSON(df)
#[{"col1":"a","col2":1},{"col1":"b","col2":2}]
基於與OP的對話,數據集作為需要轉換為JSON格式的命名list
傳遞
toJSON(list(listName = df))
#{"listName":[{"col1":"a","col2":1},{"col1":"b","col2":2}]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.