gpt4 book ai didi

r - 在R中组合字符时只粘贴一次

转载 作者:行者123 更新时间:2023-12-04 01:14:41 25 4
gpt4 key购买 nike

有没有办法只组合一次字符。下面是例子

> dfew <- data.frame(x=c("John S", "Carl", "Katy Smith", "J P Morgan Stanley")) 
> paste("list(",dfew$x,")", collapse = ",")
[1] "list( John S ),list( Carl ),list( Katy Smith ),list( J P Morgan Stanley )"

下面的代码给出了完美的结果

sub_list <- paste0('list( ',paste0(dfew$x,collapse = ', '),' )')

实际输出

[1] "list( John S , Carl , Katy Smith , J P Morgan Stanley )"

但是对于下面的数据框,当我按照相同的步骤操作时,反斜杠会返回。我们可以避免它们吗?

df
COlA COlB
1 list(ved = "19", ved_name = "No", vedd = "11")
2 list(ved = c("65", "83", "2"), ved_name = c("At", "Re", "Rum"), vedd = c("11", "11", "11"))

返回的输出

sub_list <- paste0('list( ',paste0(df$COlB,collapse = ', '),' )')
> sub_list
[1] "list( list(ved = \"19\", ved_name = \"No\", vedd = \"11\"), list(ved = c(\"65\", \"83\", \"2\"), ved_name = c(\"At\", \"Re\", \"Rum\"), vedd = c(\"11\", \"11\", \"11\")) )"

我们可以避免这种反斜杠吗?

最终预期输出

> sub_list
[1] "list( list(ved = "19", ved_name = "No", vedd = "11"), list(ved = c("65", "83", "2"), ved_name = c("At", "Re", "Rum"), vedd = c("11", "11", "11")) )"

我需要预期输出的原因是

我执行以下操作(我只是复制粘贴 ColB 值)

下方代码1

df <- tibble(ID = 1:2, 
ColB = list(list(ved = "19", ved_name = "No", vedd = "11"), list(ved = c("65", "83", "2"), ved_name = c("At", "Re", "Rum"), vedd = c("11", "11", "11"))))

代码1的输出如下(完美)

df
# A tibble: 2 x 2
ID ColB
<int> <list>
1 1 <named list [3]>
2 2 <named list [3]>

但是当我遇到反斜杠时,我无法复制粘贴 ColB 值。如果我这样做,我不会得到输出

代码2

df <- tibble(ID = 1:2, 
ColB = list( list(ved = \"19\", ved_name = \"No\", vedd = \"11\"), list(ved = c(\"65\", \"83\", \"2\"), ved_name = c(\"At\", \"Re\", \"Rum\"), vedd = c(\"11\", \"11\", \"11\")))

执行代码2时出现错误

Error: unexpected input in:
"df <- tibble(ID = 1:2,
ColB = list( list(ved = \"

让我知道这是否有意义

最佳答案

这里的关键是您需要将字符串 (dfew$x) 的长度设置为 1(目前它的长度是 4)。将其压缩为长度为 1 的最简单方法是使用 toString

您可以使用sprintf 为所需的字符串添加前缀、后缀字符。

sprintf('list(%s)', toString(dfew$x))
#[1] "list(John S, Carl, Katy Smith, J P Morgan Stanley)"

paste/paste0 :

paste0('list( ', toString(dfew$x), ' )')
#paste('list( ', toString(dfew$x), ' )')

关于r - 在R中组合字符时只粘贴一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755744/

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