5

次のデータ フレーム (データ) があり、ゼロ以外の要素がある場合は列ヘッダーを抽出して印刷します。

  M1 M2 M3 M4
2  0  1  0 1
5  1 -1  0 0
7  0  1  1 0

必要な出力:

2: M2 M4
5: M1 M2
7: M2 M3 

これまでのところ、私の R コードは機能していません。

colnames(data)[which(data[2] !=0),]

助けていただければ幸いです。ありがとう

4

3 に答える 3

5

これは常にリストを返します:

Map(`[`, list(names(df)), split(col(df)[df != 0],
                                row(df)[df != 0]))

# [[1]]
# [1] "M2" "M4"
# 
# [[2]]
# [1] "M1" "M2"
# 
# [[3]]
# [1] "M2" "M3"

(また、リストでの行名setNames(..., rownames(df))を共有したい場合は、内側にラップできます。)df

于 2013-10-19T00:45:22.000 に答える