내가하고 싶은 일은 루프 대신 apply를 사용하여 두 행의 문자열을 각 행으로 비교하는 것입니다. x.str의 행 하나와 y.str의 행 하나.쌍을 이루는 단어의 배열을 테스트하여 쌍이 공유하는 문자를 찾습니다.
A = array(0,dim=dim(x.str1))
for(i in 1:length(x.str[,1])){
A[i,] = ifelse(x.str[i,] %in% y.str[i,],1,0)
}
아웃으로 넣어 :
x.str
[,1] [,2] [,3] [,4]
[1,] "c" "o" "m" "e"
[2,] "g" "o" "n" "e"
[3,] "b" "o" "o" "d"
[4,] "f" "i" "n" "e"
y.str
[,1] [,2] [,3] [,4]
[1,] "t" "o" "o" "t"
[2,] "j" "a" "m" "m"
[3,] "b" "e" "e" "n"
[4,] "l" "e" "t" "s"
것은 내가 루프로 쓰려고 한 경우
[,1] [,2] [,3] [,4]
[1,] 0 1 1 0
[2,] 0 0 1 0
[3,] 1 0 0 0
[4,] 0 1 0 0
그러나 실제 배열의 크기는 약입니다.
array(0,dim=c(10000,12)
따라서 루프 대신 적용하는 것이 더 좋았습니다. 나는이 사이트와 다른 곳곳을 둘러 보았고 여러 가지 방법을 시도했지만 기능에서 사용하기 위해 적용되는 현재 행을 선택하는 방법을 배제했다. 내가 좋아하는 그 (것)들을 사용했습니다
nrow()
rownames()
: 비슷한 게시물이 사용 제안
stringCom = function(x){
i = nrow(x)
ifelse(x.str[i,] %in% y.str1[i,],0,1)
}
apply(x.str,1,stringCom)
을하지만 점점 계속 모든 오류입니다. 내가 시도 :
test = function(x){
r = nrow(x)
r
}
apply(x.str,1,test)
그냥 출력으로 NULL을 제공합니다. 비슷한 일은 rownames, NROW, 이름 등에서 발생합니다. 아마도 매우 간단한 답변 일 것이지만 찾을 수없는 것 같습니다.
모든 제안/도움을 주시면 대단히 감사하겠습니다.
원하는 출력물이 나에게 적합하지 않습니다. 나는 무엇이 체크되고 있는지에 관해 완전히 잃어버린다. – thelatemail
한 쌍의 단어 목록을 비교하여 쌍이 어떤 문자를 공유 하는지를 비교하여 공유하는 총 수, 공유하는 고유 한 문자의 총 수 및 공유 문자의 위치를 알아 내야했습니다. 이 작업을 수행하는 것으로 알아낼 수있는 유일한 방법은 편지로 문자를 테스트하기 위해 여러 개의 루프를 작성하지 않고 % %에서 % b 및 % b에서 %를 두 번 수행하는 것입니다. 출력이 % x.str의 y.str %에 대한 출력 이었기 때문에 위의 출력이 잘못되었음을 알았습니다 (미안합니다). 희망이 답변하고 시간을내어 주셔서 감사합니다 도움이됩니다. –
x.str/y.str의 각 행은 단어의 구성 문자를 나타냅니다. y.str 행의 각 문자 ** **가 x.str **의 해당 행에 있는지 테스트하려고합니다. – smci