r - cbind i :th name of a list-of-lists to the i:th list

标签 r dataframe nested-lists names strsplit

(请随意将标题更改为更合适的内容)

我有一个如下所示的列表列表。我想要做的是将每个嵌套列表的每个名称cbind到该列表中的新列。另外,我想通过/strsplit每个names,所以实际上cbind是两列,即Nrep=rep1 和 sp=sp1,每个的行数与嵌套列表本身相同。

`rep1/sp1` <- read.table(text= "var,X2x,X4x,X6x
                101337,4.631833,4.4547,11.097333
                345754,3.727433,10.8560,10.536600" ,header=TRUE, sep=",")

`rep1/sp2` <- read.table(text= "var,X2x,X4x,X6x
               101337,5.631833,10.4547,11.097333
               345754,5.727433,12.8560,10.536600" ,header=TRUE, sep=",")

dflist <- list(`rep1/sp1`=`rep1/sp1`, `rep1/sp2`=`rep1/sp2`)

我的想法是尝试分两步完成;将 names + strsplit 提取出来,然后将每个 cbind 提取到正确的嵌套列表,产生如下所示的输出。但是,我不知道如何进行最后一步。

rep_sp <- names(dflist)
rep_sp <- strsplit(rep_sp, "/")
rep_sp <- lapply(rep_sp, function(x) data.frame(t(cbind(x))))
rep_sp <- ldply(rep_sp, data.frame)
colnames(rep_sp) <- c("Nrep","sp")

# hit the wall...

期望的输出

> dflist
$`rep1/sp1`
Nrep  sp    var      X2x     X4x      X6x
rep1 sp1 101337 4.631833  4.4547 11.09733
rep1 sp1 345754 3.727433 10.8560 10.53660

$`rep1/sp2`
Nrep  sp    var      X2x     X4x      X6x
rep1 sp2 101337 5.631833 10.4547 11.09733
rep1 sp2 345754 5.727433 12.8560 10.53660

任何有关此问题的指示都将非常感激,谢谢!

最佳答案

如果它们不必是第一列和第二列,那么

rep_sp <- names(dflist)
rep_sp <- strsplit(rep_sp, "/")
Map(cbind, dflist, 
    Nrep = sapply(rep_sp,'[',1),
    sp = sapply(rep_sp,'[',2))

可以工作并且非常简单(仅使用基本函数)

$`rep1/sp1`
     var      X2x     X4x       X6x Nrep  sp
1 101337 4.631833  4.4547 11.097333 rep1 sp1
2 345754 3.727433 10.8560 10.536600 rep1 sp1

$`rep1/sp2`
     var      X2x     X4x       X6x Nrep  sp
1 101337 5.631833 10.4547 11.097333 rep1 sp2
2 345754 5.727433 12.8560 10.536600 rep1 sp2

我没有把它们放在第一位的原因是当你使用 Map 时它将使用您传递的第一个数据参数命名列表的元素。所以通过dflist首先,我保留这些名字。您可以重新排列参数,然后只需使用类似 names(newobj)<-names(dflist) 的内容重置名称后记。

关于r - cbind i :th name of a list-of-lists to the i:th list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088616/

相关文章:

python - 数据帧切片并旋转为多个数据帧

python - 迭代嵌套列表以生成最小和最大值,忽略 NoneType

java - 展平深度嵌套的集合

r - 月日格式的日期对象

R - 匹配两列之间的字符串

r - 使用 ggplot2 进行逻辑回归 + 直方图

python-3.x - 将不均匀字典列表转换为 pandas 数据框

r - 更改 ggplot2 中刻度的位置(在绘图内)

Python:从其他列中选择的列获取值

r - [R]-从嵌套列表(列表列)中提取模型系数