r - R - 遍历列表并计算要存储在矩阵中的值
问题描述
晚上好,我有以下清单:
lf <- 1 / 100 * c(
A = 6.756, B = 1.234, C = 2.302, D = 3.518, E = 10.508, F = 1.843, G = 1.667,
H = 5.041, I = 5.763, J = 0.127, K = 0.639, L = 3.330, M = 1.990, N = 5.583,
O = 6.210, P = 1.596, Q = 0.079, R = 4.953, S = 5.234, T = 7.492, U = 2.282,
V = 0.809, W = 1.952, X = 0.124, Y = 1.633, Z = 0.061, ` ` = 17.272)
和一段文字:
text <- c("THIS IS A TEST")
我正在尝试编写一个循环,以便文本中的每个字母都从 lf 接收到右上方的数字。我希望它存储在一个矩阵中,以便在应用一个函数后我可以找到最高值。
我从
n <- length(lf)
mat <- matrix(ncol=2, nrow=n)
for (i in 1:n) {
var1[[i]] <-
}
但我似乎无法解决这个问题。如何编写一个遍历列表 (lf) 值并将每个计算值存储在矩阵中的函数?
非常感谢您的帮助 =)
上面的数字代表对数可能性(这是一个密码问题)。我要找到一个字母(即“K”)在尝试破译一个用一个字母加密的代码时给出的所有可能性的最低总和。
我发现了如何获得给定文本的总和(包括空格)
sum(log(letterfrequencies[match(plaintext, names(letterfrequencies))]))
现在,在尝试加密文本上的每个字母时,我必须找到最低的对数可能性,我认为我需要一个循环来尝试每个字母
(我删除了我之前的问题,因为我没有正确解释问题)
解决方案
您可以在没有循环的情况下执行此操作:
sapply(strsplit(text, ""), function(x) lf[x])
#> [,1]
#> T 0.07492
#> H 0.05041
#> I 0.05763
#> S 0.05234
#> 0.17272
#> I 0.05763
#> S 0.05234
#> 0.17272
#> A 0.06756
#> 0.17272
#> T 0.07492
#> E 0.10508
#> S 0.05234
#> T 0.07492
如果您只想对单个字母的值求和,那么一个小的包装函数应该可以解决问题:
sum_letters <- function(letter, text) {
sum(strsplit(text, "")[[1]] %in% letter) * lf[letter]
}
这允许您执行以下操作:
sum_letters("T", text)
#> T
#> 0.22476
或获取字母表中所有字母的总和:
sums <- sapply(LETTERS, sum_letters, text = text, USE.NAMES = FALSE)
sums
#> A B C D E F G H I J
#> 0.06756 0.00000 0.00000 0.00000 0.10508 0.00000 0.00000 0.05041 0.11526 0.00000
#> K L M N O P Q R S T
#> 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.15702 0.22476
#> U V W X Y Z
#> 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
从而找到最合适的:
which.max(sums)
#> T
#> 20
由reprex 包(v0.3.0)于 2020 年 11 月 1 日创建
推荐阅读
- calc - 在 Libre Office Calc 中,当右侧边缘无法向内拖动时,如何调整列宽?
- python - 如何将列表转换为字典?
- c# - 删除多对多实体框架(WinForms)
- c++ - 如何转换`std::tuple
` 到 `std::tuple` - python - 将字符串隐藏到 yaml 并在烧瓶中返回响应
- python - 如何从 Python 3 中的 awswrangler 捕获 exceptions.NoFilesFound 错误
- loops - 数组数据名称的 LESS 循环
- javascript - 试图弄清楚为什么气球弹出游戏没有重置 clickCount
- python-3.x - Pandas 根据开始和结束日期重新采样
- graphql - AWS GraphQL 错误:“消息”:“变量 'customerId' 已将 NonNull 类型 'ID!' 强制为 Null 值!”