由于我真的是 R 的新手,我不確定我是否能夠正確表達我的問題,所以提前抱歉。我有一些具有給定值的字母。我為這些創建了一個資料框,并且我還有一個具有相同字母集的字串。我想將資料幀中的值與字串的每個字母對應,然后計算長度為 L 的視窗的平均值。我找不到做第一部分的方法,因為我不知道如何比較字串字符與資料幀字符,然后將值分配給字串字符以找到視窗的平均值。有小費嗎?
A = data.frame(A = 0.429, C = -0.051, D = -2.024, E = -2.181, F = 0.836,
G = 0.158, H = -1.056, I = 0.959, K = -2.398, L = 0.658,
M = 0.470, N = -1.099, P = -0.675, Q = -1.564, R = -2.501,
S = -0.292, T = -0.182, V = 0.634, W = 0.463, Y = 0.163)
(a <- "MASEFKKKLFWRAVVAEF")
a_split = strsplit(a, "")
L = readline(prompt = "Enter window length: \n")
x = nchar(a)
for(i in 1:x-L)
{
for(j in a_split)
{
}
}
uj5u.com熱心網友回復:
您可以使用原始資料格式進行單行:
sapply(unlist(strsplit(a, "")), \(i) A[[i]])
#> M A S E F K K K L
#> 0.470 0.429 -0.292 -2.181 0.836 -2.398 -2.398 -2.398 0.658
#> F W R A V V A E F
#> 0.836 0.463 -2.501 0.429 0.634 0.634 0.429 -2.181 0.836
或者,如果您不想要字母索引,則單行是:
as.numeric(sapply(unlist(strsplit(a, "")), \(i) A[[i]]))
#> [1] 0.470 0.429 -0.292 -2.181 0.836 -2.398 -2.398 -2.398 0.658
#> [10] 0.836 0.463 -2.501 0.429 0.634 0.634 0.429 -2.181 0.836
uj5u.com熱心網友回復:
對于原始 data.frame,您可以撰寫unlist(A)[ a_split[[1]] ].
但是不要使用 data.frame,而是使用命名的數字向量,
A = c(A = 0.429, C = -0.051, D = -2.024, E = -2.181, F = 0.836,
G = 0.158, H = -1.056, I = 0.959, K = -2.398, L = 0.658,
M = 0.470, N = -1.099, P = -0.675, Q = -1.564, R = -2.501,
S = -0.292, T = -0.182, V = 0.634, W = 0.463, Y = 0.163)
然后將其用作字母和值之間的“映射”
values <- A[ a_split[[1]] ]
values
# M A S E F K K K L F W
# 0.470 0.429 -0.292 -2.181 0.836 -2.398 -2.398 -2.398 0.658 0.836 0.463
# R A V V A E F
# -2.501 0.429 0.634 0.634 0.429 -2.181 0.836
使用convolve()計算滑動視窗平均
window_size = 4
convolve(values, rep(1, window_size) / window_size, type = "filter")
# M A S E F K K K
# -0.39350 -0.30200 -1.00875 -1.53525 -1.58950 -1.63400 -0.82550 -0.11025
# L F W R A V V
# -0.13600 -0.19325 -0.24375 -0.20100 0.53150 -0.12100 -0.07050
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350427.html
上一篇:Cbind在R中獲取環境物件
