Dưới đây là ví dụ nhỏ:dịch (thu âm) lỗi trong r
X1 <- c("AC", "AC", "AC", "CA", "TA", "AT", "CC", "CC")
X2 <- c("AC", "AC", "AC", "CA", "AT", "CA", "AC", "TC")
X3 <- c("AC", "AC", "AC", "AC", "AA", "AT", "CC", "CA")
mydf1 <- data.frame(X1, X2, X3)
Input khung dữ liệu
X1 X2 X3
1 AC AC AC
2 AC AC AC
3 AC AC AC
4 CA CA AC
5 TA AT AA
6 AT CA AT
7 CC AC CC
8 CC TC CA
Chức năng
# Function
atgc <- function(x) {
xlate <- c("AA" = 11, "AC" = 12, "AG" = 13, "AT" = 14,
"CA"= 12, "CC" = 22, "CG"= 23,"CT"= 24,
"GA" = 13, "GC" = 23, "GG"= 33,"GT"= 34,
"TA"= 14, "TC" = 24, "TG"= 34,"TT"=44,
"ID"= 56, "DI"= 56, "DD"= 55, "II"= 66
)
x = xlate[x]
}
outdataframe <- sapply (mydf1, atgc)
outdataframe
X1 X2 X3
AA 11 11 12
AA 11 11 12
AA 11 11 12
AG 13 13 12
CA 12 12 11
AC 12 13 13
AT 14 11 12
AT 14 14 14
Vấn đề, AC không eaqual đến 12 trong đầu ra thay vì 11, tương tự cho những người khác. Chỉ cần lộn xộn!
(exta: Ngoài ra tôi không biết làm thế nào để thoát khỏi những rownames.)
Giải pháp đơn giản nhất cho bạn có thể chỉ là chỉnh sửa 'x = xlate [x]' thành 'x = xlate [as.character (x)]', vì đó là bit gây ra lỗi. ('X' là vectơ của lớp 'yếu tố', và các giá trị số nguyên của nhân tố (chứ không phải là các chuỗi ký tự liên quan) đang được sử dụng trong việc lập chỉ mục.) –
Ngoài ra, để loại bỏ các rownames, chỉ cần làm' rownames (mydf) <- NULL'. –