Mar*_*wer 0 string r list named
给定一个命名列表:
values <- list( a=1, b=2 )
Run Code Online (Sandbox Code Playgroud)
我想生成一个逗号分隔的字符串,其中包含以下名称:
"a=1,b=2"
Run Code Online (Sandbox Code Playgroud)
以下作品,但看起来非常笨重:
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"
Run Code Online (Sandbox Code Playgroud)
在"粘贴""崩溃"的选择似乎那么优雅靠拢,但我无法弄清楚它是否可以进行分层(即,"首先,崩溃的名称和值用'=’,然后崩溃'’) :
paste0( paste0(names(values), values, collapse='='), collapse="," )
[1] "a1=b2"
Run Code Online (Sandbox Code Playgroud)
要么
paste0( paste0( c(names(values), values), collapse='=' ), collapse=',' )
[1] "a=b=1=2"
Run Code Online (Sandbox Code Playgroud)
尝试lapply和paste0生成:
paste0( lapply( values, function(x) paste0( names(x), "=", x ) ), collapse=',' )
[1] "=1,=2"
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来做到这一点,还是我只是坚持笨重的方式?
不确定你将如何使用它,但我们可以通过names将列表"="和列表元素的实际值连接在一起来创建一个字符串.
paste0(paste0(names(values), "=", unlist(values)), collapse = ",")
#[1] "a=1,b=2"
Run Code Online (Sandbox Code Playgroud)
在更大的列表上尝试它
values <- list(a=1, b=2, c = 12, d = 5)
paste0(paste0(names(values), "=", unlist(values)), collapse = ",")
#[1] "a=1,b=2,c=12,d=5"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |