R 将数据框拆分为列表,同时将列值保留为子列表名称

R 将数据框拆分为列表,同时将列值保留为子列表名称,r,dataframe,dplyr,data.table,tidyverse,R,Dataframe,Dplyr,Data.table,Tidyverse,我有以下数据框,我希望将第一列值保留为子列表名称,第二列值保留为其元素 输入- 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

我有以下
数据框
,我希望将第一列值保留为子列表名称,第二列值保留为其元素

输入-

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

注意-在创建列表之前,我还想
-
拆分
值。

使用
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"

具有
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"
setNames(strsplit(dt$val,“-”,TRUE),dt$var)
setNames(strsplit(dt$val,“-”,TRUE),dt$var)
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