2016-09-23 4 views
0

두 요소에 대해 두 개의 데이터 프레임에 함수를 적용하려면 어떻게해야합니까? 다음 예에서 두 개의 데이터 프레임에있는 각 요소에 함수 적용 R

나는에 대한 루프 이중 않도록하려면 :

for(m in 1:nrow(DF1)) { 

    for(n in 1:ncol(DF1)) { 

    mySeq <- seq(DF1[m,n], DF2[m,n], 0.01) 

    # Do the rest with mySeq ... 

    } 
} 

내 목적은 인덱스와 같은 두 dataframes의 각 요소 사이에 시퀀스를 생성하는 것입니다.

아마도 가장 빠른 해결책과 첫 번째 thothth는 mySeq <- seq(DF1, DF2, 0.01)입니다. 하지만이 작업은 seq(from,to)의 인수가 길이 1이어야하기 때문에 효과가 있습니다.

두 번째 시도는 apply()입니다. 이는 하나의 데이터 프레임에만 적용되기 때문에 작동하지 않습니다. 그런 다음 적절한 적용 솔루션을 찾고 mapply()을 찾았습니다. mapply를 사용하면 두 개의 데이터 프레임에 적용 할 수 있지만 데이터 프레임의 각 요소에 적용 할 가능성은 없지만 데이터 프레임의 행에는 적용 할 수 없습니다. 그리고 중첩 된 apply() 호출을 사용하고 싶지 않습니다.

그럼 내 질문은 이중 for 루프 나 중첩 적용을 사용하지 않고 위에 표시된 예제를 코딩하는 방법입니다.

+4

예제 입력과 함께 [재현 가능한 예제] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 제공하면 도움이 될 것입니다. 원하는 출력. – MrFlick

+3

아마 두 data.frames에'unlist'를 사용하고 나서'mapply' – Cath

+0

unlist가 mapply()로 작업을 완료했습니다. 고맙습니다 ! – Manuel

답변

0

요소에 어떤 기능을 적용하려고하는지 잘 모르겠지만 이전에는 비슷한 기능을 위해 sweep() 함수를 사용했습니다. 예를 들어 :

여기
df = data.frame(x = 1:10, y = 1:10, z = 1:10) 
sweep(df, 1:2, 1) 

스윕은 안양의 모든 요소를 ​​통과하고 1을 빼는하지만 당신은 요소에서 작동하는 자신의 기능을 지정할 수 있습니다. 그런 다음 2 개의 데이터 프레임을 묶어서 sweep()을 사용하거나 별도로 적용 할 수 있습니다.

관련 문제