gpt4 book ai didi

r - 如何从另一个向量中获取包含具有相应值的字符的矩阵的行总和

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

您好,我从我的数据中提取了这一列:

x <- data.frame(Category=factor(c("xxyyxyxyx", "xxyyyyxyx", "xxyyxyxyy",
"yxyyxyxyx", "xxyyxyyyx")))
> x
Category
1 xxyyxyxyx
2 xxyyyyxyx
3 xxyyxyxyy
4 yxyyxyxyx
5 xxyyxyyyx

我必须计算每行中每三个字符产生的相应行总和,所以我生成了这个矩阵:

xx <- t(apply(x, 1, function(x){strsplit(gsub("([[:alnum:]]{3})", "\\1 ", x), " ")[[1]]}))

> xx

[,1] [,2] [,3]
[1,] "xxy" "yxy" "xyx"
[2,] "xxy" "yyy" "xyx"
[3,] "xxy" "yxy" "xyy"
[4,] "yxy" "yxy" "xyx"
[5,] "xxy" "yxy" "yyx"

每个 xx 单元格对应于此向量中给定的值

matval=c("xxy"=3, "yxy"=2, "xyx"=7, "xyy"=5, "yyx"=12, "yyy"= 4)

我想基于矩阵 xx 在矩阵 x 中添加一个包含每一行总和的列,即

x

Category RowSum
1 xxyyxyxyx 12
2 xxyyyyxyx 14
3 xxyyxyxyy 10
4 yxyyxyxyx 11
5 xxyyxyyyx 17

非常感谢!

最佳答案

我们可以使用键/值索引替换'xx'中的值并获得rowSums

x$RowSum <- rowSums(`dim<-`(matval[xx], dim(xx)))

'xx' 也可以使用 strsplit

创建
 do.call(rbind, strsplit(as.character(x$Category), "(?<=.{3})", perl = TRUE))

关于r - 如何从另一个向量中获取包含具有相应值的字符的矩阵的行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40174002/

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