【发布时间】:2017-11-13 08:15:56
【问题描述】:
我正在尝试用来自数据帧的信息替换字符串中的一系列数字。
我的字符串来自我使用 readr 包导入的文本文件,如下所示:read_file("Human.txt")
我检查了课程,这是性格。该字符串包含以下信息(我将其命名为 treeString):
"(1,2,((((3),884),(((((519,((516,517),(515,(518,(513,514))))),((((((((458,(457,(455,456))),459),(502,(454,(453,(451,452)))))"
我的数据框 (labels.csv) 最初是因子格式,但我使用以下命令将第二列的格式更改为字符:labels[,2] = as.character(labels[,2])。看起来是这样的
v1 v2
1 1 name1
2 2 name2
3 3 name3
我的目标是用数据框中的相应名称(即 V2)替换字符串中的每个数字。这应该会产生以下结果:
"(name1,name2,((((name3),884),(((((519,((516,517),(515,(518,(513,514))))),((((((((458,(457,(455,456))),459),(502,(454,(453,(451,452)))))"
这是我用来完成此操作的代码:
for(i in 1:nrow(labels)){
gsub(as.character(i), labels[i,2], treeString)
}
奇怪的是,如果我自己运行 gsub() 命令(使用指定的数字 - 例如 2),它会进行替换,但是,当我在循环中运行它时,它不会替换数字。
【问题讨论】:
-
在您的代码中,您没有将结果分配回 treeString 变量
-
谢谢,解决了!