2016-07-19 21 views
2

いくつかのリスト項目を持つデータフレームがあり、そのデータフレーム内ですべてのリスト項目をデータフレームに変換したいと考えています。サンプルデータフレームdf。リスト項目がないデータフレームが必要です。データフレーム内のリスト要素をデータフレームに変換する方法

structure(list(Study = structure(c(1L, 3L, 2L), .Label = c("new", 
"y", "z"), class = "factor"), IQC = structure(list(result.1 = 4, 
    result.2 = 20, result.3 = 2.67), .Names = c("result.1", "result.2", 
"result.3")), EQC = structure(list(result.1 = "1.12*", result.2 = "0.9*", 
    result.3 = 3.1), .Names = c("result.1", "result.2", "result.3" 
)), CQCg = structure(list(result.1 = 307.65, result.2 = 307.65, 
    result.3 = 16.16), .Names = c("result.1", "result.2", "result.3" 
)), CQCp = structure(list(result.1 = 22.27, result.2 = 20.93, 
    result.3 = 9.59), .Names = c("result.1", "result.2", "result.3" 
)), AQCg = structure(list(result.1 = 10.8, result.2 = 8.99, result.3 = 8.37), .Names = c("result.1", 
"result.2", "result.3")), AQCp = structure(list(result.1 = 3.81, 
    result.2 = "1.07*", result.3 = "0.2*"), .Names = c("result.1", 
"result.2", "result.3")), Rank = c(1.42, 1.92, 2.67)), .Names = c("Study", 
"IQC", "EQC", "CQCg", "CQCp", "AQCg", "AQCp", "Rank"), row.names = c(NA, 
3L), class = "data.frame") 

答えて

2

あなたが必要なものを行うためにunlistを使用することができます。これが参考になることを願っています。

unlisted <- as.data.frame(t(apply(df, 1, unlist))) 
+1

これは機能します。ありがとう – Hashim

3

data.frameのいずれかのカラムからlistクラスを削除するには、一つは単純に、この変換後

df[] <- unlist(df) 

を使用することができ、data.frameに表示されるエントリは変更されないまま:

#> df 
# Study IQC EQC CQCg CQCp AQCg AQCp Rank 
#1  1 4 1.12* 307.65 22.27 10.8 3.81 1.42 
#2  3 20 0.9* 307.65 20.93 8.99 1.07* 1.92 
#3  2 2.67 3.1 16.16 9.59 8.37 0.2* 2.67 

しかし、リストの列が文字列に変換されたことを確認できます。

#> sapply(df,class) 
# Study   IQC   EQC  CQCg  CQCp  AQCg  AQCp  Rank 
#"character" "character" "character" "character" "character" "character" "character" "character" 

PS:この回答の前のバージョンの間違いを指摘するための@docendodiscimusへのヒント。

+0

@docendodiscimus多分私は質問を誤解しています。私は、リスト以外の列をすべて削除することを目標と考えました。 – RHertel

+0

@docendodiscimusあなたが正しいと思います。私はこれを修正しようとします。 – RHertel

+0

ご意見ありがとうございます。私は 'unlist(df)'だけが解決策ではないと思う。これは、データフレームのフォーマットを変更します。 – Hashim

関連する問題