我有一个数据框,其中包含一个包含逗号分隔数字的字符列。如何将每个逗号分隔的数字放入单引号中?
考虑下面的示例。基本上,我希望将数据帧<code>df1</code>转换为数据帧<code>df2</code>。
var1 <- c("1,2,3","1,24,41")
df1 <- data.frame(var1)
df1
## var1
## 1 1,2,3
## 2 1,24,41
var1 <- c("'1','2','3'","'1','24','41'")
df2 <- data.frame(var1)
df2
## var1
## 1 '1','2','3'
## 2 '1','24','41'
我在堆栈溢出上发现了一个问题,它解决了类似的问题(在向量的每个元素周围加上引号,并用逗号分隔)。但是,它是关于字符向量的。在这种情况下,我无法弄清楚如何将解决方案(或可能存在的任何其他解决方案)应用于数据框的字符列。
由于您有一个包含数字的完整字符串,您不能使用您引用的解决方案,因为它们以数字向量开头。相反,您需要操作字符串。在这里,我寻找数字,并用单引号替换每个匹配项。
var1 <- stringr::str_replace_all(var1, "\\d+", "'\\0'")
或在您的数据框中:
df1$var2 <- stringr::str_replace_all(df1$var1, "\\d+", "'\\0'")
输出:
> df1
var1 var2
1 1,2,3 '1','2','3'
2 1,24,41 '1','24','41'
编辑:错误/错别字。
以下是使用您的方法得到的答案:
df1$var1 <- lapply(strsplit(df1$var1 , ",") ,
function(x) paste0(sprintf("'%s'", x), collapse = ", "))