我把数据格式化为数据格式。
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“变成两份清单。
list <- list()
list[[1]] <- cbind(a1,a2,c)
list[[2]] <- cbind(b2,b2,c)
提前谢谢!
发布于 2022-02-08 12:55:14
如果我能理解:
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")])
)
发布于 2022-02-08 12:51:19
关于创建两个列表的逻辑,还没有分享足够的细节,但我将假设您希望根据名称来拆分它们。因此,所有列中包含"a“的列都在一个列表中,所有带有"b”的列都位于另一个列表中。一个列("c"
)在两个列表中都是常量。
下面是一种使用split.default
的基本R方法-
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
中的分组变量。
sub('\\d+', '', names(abc)[-exclude_cols])
#[1] "a" "a" "b" "b"
数据
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)
https://stackoverflow.com/questions/71034076
复制相似问题