【问题标题】:Split data frame into list while keeping column values as sub list names将数据框拆分为列表,同时将列值保留为子列表名称
【发布时间】:2019-04-02 20:15:07
【问题描述】:

我关注data frame,我想将第一列值保留为子列表名称,将第二列值保留为其元素。

输入-

var <- c("a","b","c","d")
val <- c("0-1-2-NA","0-1","0-2-4","0-NA")
dt <- data.frame(var,val, stringsAsFactors = FALSE)

> dt
  var      val
1   a   0-1-2-NA
2   b      0-1
3   c    0-2-4
4   d     0-NA

期望的输出-

$a
[1]  0  1  2 NA

$b
[1] 0 1

$c
[1] 0 2 4

$d
[1]  0 NA

注意- 在创建列表之前,我还想通过- 设置split 值。

【问题讨论】:

  • setNames(strsplit(dt$val, "-", TRUE), dt$var)

标签: r dataframe dplyr data.table tidyverse


【解决方案1】:

带有strsplit 的基本 R 解决方案。

dat <- strsplit(dt$val, split = "-")
names(dat) <- dt$var
dat
# $a
# [1] "0"  "1"  "2"  "NA"
# 
# $b
# [1] "0" "1"
# 
# $c
# [1] "0" "2" "4"
# 
# $d
# [1] "0"  "NA"

要自动转换字符串,请添加type.convert(或as.integeras.numeric):

res <- with(dt, lapply(strsplit(setNames(val, var), "-"), type.convert))
str(res)

# List of 4
#  $ a: int [1:4] 0 1 2 NA
#  $ b: int [1:2] 0 1
#  $ c: int [1:3] 0 2 4
#  $ d: int [1:2] 0 NA

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 2014-07-07
    • 2014-04-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多