gpt4 book ai didi

R 更改数据框中的元素

转载 作者:行者123 更新时间:2023-12-04 11:18:10 24 4
gpt4 key购买 nike

正如标题所说,我正在尝试将数据框中的元素从一个字符更改为另一个字符。数据框如下:

g1=c("CC","DD","GG")
g2=c("AA","BB","EE")
g3=c("HH","II","JJ")

df=data.frame(g1,g2,g3)

我希望将元素从字母格式转换为字母/字母格式(例如,CC 到 C/C 或 AA 到 A/A)

我知道使用“strsplit”可以处理列表。我也知道我需要以某种方式合并:collapse="/"

我如何才能将 strsplit 函数应用于整个数据框?

我在想一些事情:

split=function(x)
{
unlist(paste(strsplit(x,""),collapse="/"))
}

j=as.data.frame(apply(df,1,split))

但它没有给出预期的结果。

更新----------------显然,以下脚本有效:

split=function(x)
{
paste(unlist(strsplit(x,"")),collapse="/")
}

p=apply(df,c(1,2),split)

如果有更高效或者更方便的方式,欢迎分享。

最佳答案

我可以想到两种方法来解决这个问题。一种是像您一样使用 strsplit 。您只缺少循环遍历从 strsplit 返回的列表中的每个元素的部分:

Split <- function(x) {
#unlist(lapply(strsplit(x, ""), paste, collapse="/"))
sapply(strsplit(x, ""), paste, collapse="/")
}
as.data.frame(lapply(df, Split))

另一种方法是使用 gsub\\B 符号,它匹配不在“单词”开头或结尾的空字符串.

as.data.frame(lapply(df, gsub, pattern="\\B", replacement="/"))

什么构成“单词”取决于语言环境和实现,因此这是使用 gsub 和反向引用的另一种解决方案。

as.data.frame(lapply(df, gsub, pattern="(.)(.)", replacement="\\1/\\2"))

关于R 更改数据框中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589081/

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