You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用apply系列函数、paste与collapse一行生成指定拼接向量?

问题描述

现有如下R语言列表形式的数据框:

mylist=list()
mylist[['name1']]=data.frame(marker=LETTERS[1:3],values=1:3)
mylist[['name2']]=data.frame(marker=LETTERS[1:2],values=11:12)

该列表的输出结构为:

mylist
$name1
  marker values
1      A      1
2      B      2
3      C      3

$name2
  marker values
1      A     11
2      B     12

需要生成一个由列表名称与marker元素拼接而成的向量,格式示例为"A@name1",最终目标向量如下:

> markers_in_names
[1] "A@name1" "B@name1" "C@name1" "A@name2" "B@name2"

如何使用apply系列函数、paste与collapse通过一行代码实现该需求?

解决方案

这里提供两种一行代码的实现方式:

方式一:使用lapply

markers_in_names <- unlist(lapply(names(mylist), function(nm) paste(mylist[[nm]]$marker, nm, sep = "@")))

方式二:使用Map(apply系列成员)

markers_in_names <- unlist(Map(function(df, nm) paste(df$marker, nm, sep = "@"), mylist, names(mylist)))

代码说明

  • 先通过names(mylist)拿到列表的所有名称(name1、name2)
  • 用lapply或Map遍历每个列表元素及其对应名称,通过paste把每个marker值和列表名称用@拼接起来
  • 最后用unlist把返回的列表结构展开成一维向量,就得到了目标格式的结果

内容的提问来源于stack exchange,提问作者DaniCee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:32:42