gpt4 book ai didi

r - 将命名列表的名称和值组合成字符串的更好方法

转载 作者:行者123 更新时间:2023-12-01 22:01:51 24 4
gpt4 key购买 nike

给定一个命名列表:

values <- list( a=1, b=2 )

我想生成一个包含名称的逗号分隔字符串:

"a=1,b=2"

下面的工作,但看起来非常笨重:

library( iterators )
library( itertools )
fieldnames <- names(values)
sublist <- list()
iter_fieldnames <- ihasNext( iter( fieldnames ) )
iter_values <- ihasNext( iter( values ) )
while( hasNext( iter_fieldnames ) & hasNext( iter_values ) ) {
sublist <- append( sublist, paste0( nextElem( iter_fieldnames ), "=", nextElem( iter_values ) ) )
}
paste0( sublist, collapse="," )
[1] "a=1,b=2"

'paste' 上的'collapse' 选项看起来非常优雅并且很接近,但我不知道它是否可以分层(即“首先,用'='折叠名称和值,然后用'折叠' ,'):

paste0( paste0(names(values), values, collapse='='), collapse="," )
[1] "a1=b2"

或者

paste0( paste0( c(names(values), values), collapse='=' ), collapse=',' )
[1] "a=b=1=2"

尝试 lapply 和 paste0 产生:

paste0( lapply( values, function(x) paste0( names(x), "=", x ) ), collapse=',' )
[1] "=1,=2"

有没有更简单的方法来做到这一点,还是我只是坚持使用笨拙的方法?

最佳答案

不确定您将如何使用它,但我们可以通过将列表的名称、“=”和列表元素的实际值连接在一起来创建一个字符串。

paste0(names(values), "=", unlist(values), collapse = ",")
#[1] "a=1,b=2"

在更大的列表上尝试

values <- list(a=1, b=2, c = 12, d = 5)

paste0(names(values), "=", unlist(values), collapse = ",")
#[1] "a=1,b=2,c=12,d=5"

感谢@Fábio Batista 提供更简单的建议。

关于r - 将命名列表的名称和值组合成字符串的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53386149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com