bp_example
다음과 같은 데이터 프레임 이 있습니다.
structure(list(Sequence = c("Sequence", "Sequence", "Sequence",
"Sequence", "Sequence", "Sequence", "Sequence", "Sequence", "Sequence",
"Sequence", "Sequence", "Sequence", "Sequence", "Sequence", "Sequence",
"Sequence", "Sequence", "Sequence", "Sequence", "Sequence", "Sequence",
"Sequence", "Sequence", "Sequence", "Sequence"), start = c(1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25), end = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25),
score = c(-0.205, -0.229, -0.115, -0.427, -0.327, -0.543,
-0.717, -0.923, -1.241, -1.471, -1.737, -1.717, -1.247, -1.137,
-0.689, -0.731, -0.337, 0.091, 0.579, 0.93, 0.575, 0.128,
-0.036, -0.186, -0.259), residue = c("M", "D", "A", "R",
"M", "R", "E", "L", "S", "F", "K", "V", "V", "L", "L", "G",
"E", "G", "R", "V", "G", "K", "T", "S", "L"), epitope = c(".",
".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".",
".", ".", ".", ".", ".", "E", "E", "E", ".", ".", ".", "."
)), .Names = c("Sequence", "start", "end", "score", "residue",
"epitope"), class = c("data.table", "data.frame"), row.names = c(NA,
-25L))
내가 원하는 것을 할 수 있는지는 잘 모르겠지만 어쨌든 여기 있습니다. 열을 반복하고 싶습니다. bp_example$epitope
예를 들어 행에 "E"가 14 개 이상인 경우, 즉 열에 "E"가 나타나는 15 개 이상의 연속 행이있는 bp_example$epitope
경우 해당 문자를 사용하고 싶습니다. 이전 열 ( bp_example$residue
)은 단일 문자열 (인수)로 인쇄됩니다.
내가 준 예제를 고려할 때 문자열을 MDARMRELSFKVVLLG
인쇄 하고 싶습니다 ( list
또는 요소로 저장하는 것이 가장 좋습니다 data.frame
).
내가 가진 이동했다 while
루프, 아직 전혀 성공을.
다음은 data.table
. 'data.frame'을 'data.table'( setDT(df1)
) 로 변환하여 run- lengh -id ( rleid
) 열 ( 'epitome' 에서 "E"값의 발생에 따라 'grp'를 생성합니다. 'Sequence'및 'grp', i
( epitome == "E"
)에 논리 조건을 지정하고 if
행 수 ( .N
)가 14보다 큰 경우 paste
'잔여'요소를 함께 지정합니다.
library(data.table)
setDT(df1)[, grp := rleid(epitope=="E")][epitope == "E",
.(residueConcat = if(.N > 14) paste(trimws(residue), collapse="")), .(Sequence, grp)]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다