将数据框转换为命名列表

时间:2019-01-14 15:07:54

标签: r

我有一个颜色和ID的数据框,并希望将它们变成颜色为name且ID为value的列表

colors <- data.frame(color = c('Gold', 'Green', 'Red'), id = c('1','2','3'))

这是数据帧的一小部分,因为有更多的行。

我正在尝试使结果与您编写时的输出相同:

colorlist <- list('Gold' = 1, 'Green' = 2, 'Red' = 3)

4 个答案:

答案 0 :(得分:5)

setNames(as.list(as.character(colors$id)), nm = colors$color)
$Gold
[1] "1"

$Green
[1] "2"

$Red
[1] "3"

答案 1 :(得分:5)

带分割:

@Override
protected void onPostExecute(String s) {
   super.onPostExecute(s);
   Log.i("JSON", s);

   try {
        JSONObject jsonObject = new JSONObject(s);
        String results = jsonObject.getString("results");
        Log.i("results", results);
        JSONArray arr = new JSONArray(results);
        for (int i = 0; i < arr.length(); i++) {
            mQuestion = arr.getJSONObject(3).getString("question");

            Log.i("Question", mQuestion);
        }


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

如果级别有问题,只需将id转换为字符:

colorlist = split(x=colors$id, f=colors$color)

答案 2 :(得分:2)

尝试:

colors <- data.frame(color = c('Red', 'Green', 'Gold'), id = c('1','2','3'))

colors_list <- as.list(as.character(colors$id))
names(colors_list) <- colors$color

colors_list

答案 3 :(得分:0)

尝试一下。看起来很像MKBakker的解决方案。我添加了as.integer(),因此结果如您所描述:

colorlist <- as.list(as.integer(colors$id))
names(colorlist) <- colors$color