gpt4 book ai didi

r - 将列表的每个元素与字符串连接起来

转载 作者:行者123 更新时间:2023-12-02 09:15:28 25 4
gpt4 key购买 nike

定义了一堆角色对象。然后使用ls在列表中描述它们。我想用一个单独的字符串连接这些对象中的每一个。

String = "stringToCombine"
Folder1 = "NameOne"
Folder2 = "NameTwo"
Folder3 = "NameThree"

ls(pattern="Folder")
[1] "Folder1" "Folder2" "Folder3"

Folder1
[1] "NameOne"

我可以使用 assign 将字符串与对象名称连接起来,但不能与值连接起来。我认为 get 可能是执行此操作的方法,但我不确定如何应用它。

for (i in ls(pattern="Folder")) {
assign(i, paste(String, i, sep="/"))
}

期望的输出:

Folder1
[1] "stringToCombine/NameOne"

上述代码的实际输出:

Folder1
[1] "StringToCombine/Folder1"

我怀疑这是一个简单的修复,但希望得到任何帮助。

最佳答案

我建议将它们存储在一个命名向量中,如下所示:

 myFolders <- sapply(mget(ls(pattern="Folder")),
function(x) paste(String, x, sep="/"))

这会返回

myFolders
Folder1 Folder2 Folder3
"stringToCombine/NameOne" "stringToCombine/NameTwo" "stringToCombine/NameThree"

使用命名向量,您可以通过名称引用每个元素,如下所示:

myFolders["Folder1"]
Folder1
"stringToCombine/NameOne"

以及它在向量中的位置:myFolders[1]。然后,您还可以循环遍历该向量,以使用 for 循环或 lapply/sapply 访问文件。


由于 paste 将直接接受列表作为参数,因此您可以使其更短(并且更有效)以生成如下未命名的向量:

paste(String, mget(ls(pattern="Folder")), sep="/")
[1] "stringToCombine/NameOne" "stringToCombine/NameTwo" "stringToCombine/NameThree"

要应用此构造中的名称,请将其包装在 setNames 中。

setNames(paste(String, mget(ls(pattern="Folder")), sep="/"), ls(pattern="Folder"))

第二种选择是使用 file.path 函数,该函数旨在提供特定于操作系统的合法路径:

setNames(file.path(String, mget(ls(pattern="Folder")), sep="/"), ls(pattern="Folder"))
Folder1 Folder2 Folder3
"stringToCombine/NameOne/" "stringToCombine/NameTwo/" "stringToCombine/NameThree/"

关于r - 将列表的每个元素与字符串连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47543902/

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