首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将dataframe中的列更改为列表?

如何将dataframe中的列更改为列表?
EN

Stack Overflow用户
提问于 2022-02-08 12:39:41
回答 2查看 31关注 0票数 -1

我把数据格式化为数据格式。

代码语言:javascript
运行
复制
a1 <- c(1,2,3,4,5)
a2 <- c(2,4,6,7,8)
b1 <- c(2,5,8,1,2)
b2 <- c(3,1,2,5,6)
c  <- c("g","h","i","j","k")
abc <- cbind(a1,a2,b1,b2,c)

我想把"abc“变成两份清单。

代码语言:javascript
运行
复制
list <- list()
list[[1]] <- cbind(a1,a2,c)
list[[2]] <- cbind(b2,b2,c)

提前谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-08 12:55:14

如果我能理解:

代码语言:javascript
运行
复制
a1 <- c(1,2,3,4,5)
a2 <- c(2,4,6,7,8)
b1 <- c(2,5,8,1,2)
b2 <- c(3,1,2,5,6)
c1 <- c("g","h","i","j","k")
abc <- data.frame(a1,a2,b1,b2,c1)

my_list <- list(
    as.list(abc[, c("a1", "a2", "c1")]),
    as.list(abc[, c("b1", "b2", "c1")])
)
票数 2
EN

Stack Overflow用户

发布于 2022-02-08 12:51:19

关于创建两个列表的逻辑,还没有分享足够的细节,但我将假设您希望根据名称来拆分它们。因此,所有列中包含"a“的列都在一个列表中,所有带有"b”的列都位于另一个列表中。一个列("c")在两个列表中都是常量。

下面是一种使用split.default的基本R方法-

代码语言:javascript
运行
复制
exclude_cols <- c(5) #"c"

list_df <- lapply(split.default(abc[-exclude_cols], 
                 sub('\\d+', '', names(abc)[-exclude_cols])), function(x) {
  cbind(x, abc[exclude_cols])
})

list_df
#$a
#  a1 a2 c
#1  1  2 g
#2  2  4 h
33  3  6 i
#4  4  7 j
#5  5  8 k

#$b
#  b1 b2 c
#1  2  3 g
#2  5  1 h
#3  8  2 i
#4  1  5 j
#5  2  6 k

sub用于从列名中删除数字,并用作split.default中的分组变量。

代码语言:javascript
运行
复制
sub('\\d+', '', names(abc)[-exclude_cols])
#[1] "a" "a" "b" "b"

数据

代码语言:javascript
运行
复制
a1 <- c(1,2,3,4,5)
a2 <- c(2,4,6,7,8)
b1 <- c(2,5,8,1,2)
b2 <- c(3,1,2,5,6)
c  <- c("g","h","i","j","k")
abc <- data.frame(a1,a2,b1,b2,c)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71034076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档