-1

リストからデータフレームを作成したい。リストは、光沢のあるhandsontable入力からのものです

入力を呼び出すと、次のようになりました。

unlist(input$hot$data)

                                    texta
2                                     80%
3                                    100%
4                                    100%
5                                    100%
6                                   textb
7                                    100%
8                                    100%
9                                    100%
10                                   100%
11                                  textc
12                                    80%
13                                   100%
14                                   100%
15                                   100%
16                                  textd
17                                     5%
18                                    95%
19                                   100%
20                                    35%

私がしようとしているのは、次のようなdfを取得することです:

col1  col2 col3 col4 col5
texta 80   100  100  100
textb 100  100  100  100
textc 80   100  100  100
textd 5    95   100  35

データ

# output dput(input$hot$data)
list(list("texta", "80%", "100%", "100%", "100%"), list(
    "textb", "100%", "100%", "100%", "100%"), list(
    "textc", "80%", "100%", "100%", "100%"), list("textd", 
    "5%", "95%", "100%", "35%"))
4

4 に答える 4

3
data <- list(list("texta", "80%", "100%", "100%", "100%"), list(
    "textb", "100%", "100%", "100%", "100%"), list(
    "textc", "80%", "100%", "100%", "100%"), list("textd", 
    "5%", "95%", "100%", "35%"))

data <- data.frame(t(sapply(data, unlist)))

X1、、X2... を列名として使用したくない場合は、次を追加します。

colnames(data) <- paste0("col", 1:ncol(data))
data

次にdata、次のとおりdata.frameです。

    col1 col2 col3 col4 col5
 1 texta  80% 100% 100% 100%
 2 textb 100% 100% 100% 100%
 3 textc  80% 100% 100% 100%
 4 textd   5%  95% 100%  35%

% 記号を削除して数値を数値に変換する場合は、次のようにします。

data[,-1] <- sapply(data[,-1], function(x) as.numeric(sub("%", "", x)))
于 2016-10-13T18:29:22.333 に答える
3

試す:

out <- as.data.frame(t(matrix(unlist(lapply(input$hot$data,  unlist)),
                     nrow = length(input$hot$data[[1]]))))
于 2016-10-13T18:17:14.317 に答える