0

私は単純な data.frame df を持っています

a    b    c     d
1    5    A     E
2    4    B     F
3    3    C     G
4    2    D     H
5    1    E     J

JSON形式で書きたいとしましょう:

jsonlite::toJSON(df[1,])

戻り値:

[{"a":1,"b":10,"c":"A","d":"J"}]

でも、

apply(df[1,], 1, jsonlite::toJSON)

戻り値:

"[\"1\",\"10\",\"A\",\"J\"]"

変数の名前はどこに行きましたか? どうすればそれらを取り戻すことができますか?

ありがとう、

カルロス

4

1 に答える 1

0

help(apply)あなたに言う:

 If ‘X’ is not an array but an object of a class with a non-null
 ‘dim’ value (such as a data frame), ‘apply’ attempts to coerce it
 to an array via ‘as.matrix’ if it is two-dimensional (e.g., a data
 frame) or via ‘as.array’.

そのためtoJSON、データ フレームであったものの各行の文字ベクトルが表示されます。

解決策は、データ フレームを分割して使用することlapplyです。

> lapply(split(df, 1:nrow(df)), jsonlite::toJSON)
$`1`
[{"a":1,"b":5,"c":"A","d":"E"}] 
$`2`
[{"a":2,"b":4,"c":"B","d":"F"}] 
$`3`
[{"a":3,"b":3,"c":"C","d":"G"}] 
$`4`
[{"a":4,"b":2,"c":"D","d":"H"}] 
$`5`
[{"a":5,"b":1,"c":"E","d":"I"}] 
于 2015-02-26T16:07:20.630 に答える