Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过循环列表名称命名元素_R_For Loop - Fatal编程技术网

R 通过循环列表名称命名元素

R 通过循环列表名称命名元素,r,for-loop,R,For Loop,很抱歉,标题可能有误导性,文章可能会重复 我想创建一个循环,它将解析列表元素1:4,并在data.frame中使用循环选择的元素名称设置它的元素。 我从一个列表开始: > names(peakAnnoList_chip) [1] "CAPAN1_px8_JunB" "CAPAN1_px13_JunB" "Panc1_13_cjun" "Panc1_px8_old_cJun" > class(peakAnnoList_chip) [1] "list" 然后我得到

很抱歉,标题可能有误导性,文章可能会重复

我想创建一个循环,它将解析列表元素1:4,并在data.frame中使用循环选择的元素名称设置它的元素。 我从一个列表开始:

> names(peakAnnoList_chip)
[1] "CAPAN1_px8_JunB"    "CAPAN1_px13_JunB"   "Panc1_13_cjun"      "Panc1_px8_old_cJun"

> class(peakAnnoList_chip)
[1] "list"
然后我得到第一个元素:

> CAPAN1_px8_JunB <- as.data.frame(peakAnnoList_chip[[1]]@anno)
> class(CAPAN1_px8_JunB)
[1] "data.frame"
但是在那里,我找不到一种优雅的方法来设置data.frame的特定名称(CAPAN1_px8_JunB)


有什么线索吗?

一个选项是
lappy
循环“peakAnnoList_芯片”的名称,提取“anno”并使用
write.table将其写入不同的数据集

lapply(names(peakAnnoList_chip), function(nm) 
        write.table(peakAnnoList_chip[[nm]]@anno, 
    file = paste0(nm, "_annotation.txt"), sep="\t", quote = FALSE))

或者另一个选项是
Map

Map(function(dat, nm) write.table(dat@nno, file =
      paste0(nm, "_annotation.txt"), sep="\t", quote = FALSE),
              peakAnnoList_chip, names(peakAnnoList_chip))

或使用
imap

library(purrr)
library(stringr)
imap(peakAnnoList_chip, ~ write.table(.x, file = str_c(.y, 
            "_annotation.txt"), sep="\t", quote = FALSE))

一个选项是
lappy
循环“peakAnnoList_chip”的名称,提取“anno”并使用
write.table将其写入不同的数据集

lapply(names(peakAnnoList_chip), function(nm) 
        write.table(peakAnnoList_chip[[nm]]@anno, 
    file = paste0(nm, "_annotation.txt"), sep="\t", quote = FALSE))

或者另一个选项是
Map

Map(function(dat, nm) write.table(dat@nno, file =
      paste0(nm, "_annotation.txt"), sep="\t", quote = FALSE),
              peakAnnoList_chip, names(peakAnnoList_chip))

或使用
imap

library(purrr)
library(stringr)
imap(peakAnnoList_chip, ~ write.table(.x, file = str_c(.y, 
            "_annotation.txt"), sep="\t", quote = FALSE))

谢谢你的回答,我来测试一下。还有一种优雅的方法可以在循环中命名:CAPAN1_px8_JunB@sunta3iouxos的输出吗?我想说的是,不要在全局环境中创建多个对象,因为它效率低下,并且会产生问题。我肯定理解这一点(最好将所有特殊数据迭代到相同的元素中)但在某些情况下,我希望将所有元素作为将来的参考,因为原始文件可能不再存在,甚至可能不共享这些元素。@sunta3iouxos在这种情况下,您可以删除
write.csv
部分并将其存储在
列表中,然后再编写它。i、 对不起,我还没有测试。谢谢你的回答,我会测试的。还有一种优雅的方法可以在循环中命名:CAPAN1_px8_JunB@sunta3iouxos的输出吗?我想说的是,不要在全局环境中创建多个对象,因为它效率低下,并且会产生问题。我肯定理解这一点(最好将所有特殊数据迭代到相同的元素中)但在某些情况下,我希望将所有元素作为将来的参考,因为原始文件可能不再存在,甚至可能不共享这些元素。@sunta3iouxos在这种情况下,您可以删除
write.csv
部分并将其存储在
列表中,然后再编写它。i、 抱歉,还没有测试它