【问题标题】:How to construction names of list with paste when using names()使用名称()时如何使用粘贴构造列表名称
【发布时间】:2016-03-23 13:13:06
【问题描述】:

第一个示例显示了一个大列表,其中包含以下元素:“3.13”“3.3”“3.47”,来自基于 VDD1 列的拆分数据帧:

>Data_Char_VDD1 <- split(Data_Char, Data_Char$VDD1)

在大列表“Data_Char_VDD1”中查找元素的名称如下所示:

>names(Data_Char_VDD1)
[1] "3.13" "3.3" "3.47"

我想在几个列表中查找名称,有时会有多少不同。假设这次是 4。

我正在尝试做这样的事情,它应该创建 4 个名为 VDD1..4 的变量,其中包含它们各自的 VDD 组合:

for(i in 1:length(Configuration$VDDlist[!is.na(Configuration$VDDlist)])){
  assign(paste0("VDD",i), names(paste0("Data_Char_VDD",i)))
}

导致 4 个空变量。

调试表明,我从使用 paste0 构造名称的列表中获取名称的方法不起作用:

>i <- 2
>names(paste0("Data_Char_VDD",i))
NULL

如何以正确的数据格式构造名称,以便对函数 names() 有用?

【问题讨论】:

  • rawr,抱歉这个问题有点长,所以很容易错过重点。我的观点是,我有多达 4 个名为 Data_Char_VDD1..4 的大型列表,这些列表来自 Data_Char 的拆分,具体取决于我的数据集中有多少 VDD cols。
  • 不清楚你在这里用assign做什么。很明显,您可能不应该这样做。请给我们一个可重现的例子吗?
  • name 是一个特殊属性,您不指定它。您只需创建一个长度为 1 的字符向量并期望它有一个名称。 x &lt;- paste0("var", 1); names(x) &lt;- "myname"; names(x).
  • 如果你没有在你的paste0(...) 上调用names,你的代码就可以正常工作。此外,请仔细考虑您是否真的想以编程方式分配变量,这通常是一个坏主意。您必须使用get 访问它们,这很痛苦。
  • 我的目标是为每个包含该大列表中元素列表的大列表设置一个变量。我知道 for() 语句可以判我入狱,当我能找到其他方法时,我会尽量避免它们。但这让我很快到达了我需要的地方。我的老板告诉我:“不要做艺术,让它工作和进步”;-)

标签: r


【解决方案1】:

试试:

names(eval(parse(text=paste0("Data_Char_VDD",i))))

【讨论】:

  • 如果你需要这个,你做错了。见fortune 106
  • 多么丑陋。您可以使用names&lt;- 函数设置向量的名称。而且很可能他甚至不应该实际使用任何这些来解决他的实际问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多