r - 将数据框中的列转换为类列表
问题描述
我正在尝试将数据框中的列转换为列表。
数据框是这种格式
State combo
1 0,0,0,0,0,0
2 1,0,0,0,0,0
3 0,1,0,0,0,0
4 1,1,0,0,0,0
5 0,0,1,0,0,0
6 1,0,1,0,0,0
7 0,1,1,0,0,0
我需要做的是将“组合”列中的每一行更改为数字列表。所以我想要结束的是第 1 行等于c(0,0,0,0,0)
等的东西。
到目前为止我的代码是......
list.combo<- read.csv("data")
rownames(list.combo) <- list.char$State
char.l <- list.char%>%
select(combo)
解决方案
这是一种方法tidyverse
-
df %>%
separate_rows(combo, sep = ",") %>%
{split(as.numeric(.$combo), .$State)} %>%
setNames(paste0("State", seq_along(.)))
$State1
[1] 0 0 0 0 0 0
$State2
[1] 1 0 0 0 0 0
$State3
[1] 0 1 0 0 0 0
$State4
[1] 1 1 0 0 0 0
$State5
[1] 0 0 1 0 0 0
$State6
[1] 1 0 1 0 0 0
$State7
[1] 0 1 1 0 0 0
这是来自@thelatemail 评论的更好方法 -
strsplit(as.character(df$combo), ",") %>%
lapply(as.numeric) %>%
setNames(paste0("State", seq_along(.)))
数据 -
df <- read.table(text = "State combo
1 0,0,0,0,0,0
2 1,0,0,0,0,0
3 0,1,0,0,0,0
4 1,1,0,0,0,0
5 0,0,1,0,0,0
6 1,0,1,0,0,0
7 0,1,1,0,0,0", header = T, stringsAsFactors = F)
推荐阅读
- oracle - SSIS 视觉工作室 2015 甲骨文 - 坏
- java - Oracle JDBC 仅使用 FETCH NEXT n ROWS 引发 ORA-00933
- c# - 串行端口不适用于 .Net Core 3.0 中的 arm64 - System.IO.Ports.SerialStream.set_DtrEnable(布尔值)的参数无效
- c - 如何将字符串的每一行保存到C中的新字符串中?
- java - 映射到 hbm.xml 文件时无法提取 ResultSet
- angular - 如何以角度编辑过滤器?
- django - 如何在chart.js模板中使用for循环标签
- python - 编写一个函数 printWithAge,它接受一个文件名和一个年龄作为参数,并打印出该年龄的每个玩家的名字
- docker - 如何为在 docker 容器内运行的操作系统启用远程桌面共享(如 VNC 服务器)
- java - HERE Maps Android:在避开特定区域的同时计算方向