2016-09-29 3 views
0

두 벡터가 있습니다. 이 두 벡터의 가능한 조합 각각에 함수를 적용하고 싶습니다. 예를 들어 다음과 같은 두 가지 벡터가 있다고 가정합니다.두 개의 목록에 함수 적용

pets <- c('dog','cat','lemur') 
fruit <- c('banana','apple','papaya') 

다음 변수 조합에 함수를 적용하고 각 함수 호출의 결과를 변수 값과 함께 저장하려고합니다.

[dog, banana] 
[dog, apple] 
[dog, papaya] 
[cat, banana] 
[cat, apple] etc... 

r에서 이것을 달성하는 가장 깔끔한 방법은 무엇입니까? 그것은 적용되는 가족에 대한 직업이어야한다고 생각합니다.

+0

아마도'expand.grid (pets, fruit) ' –

+1

expand.grid는 두 벡터의 모든 조합을 만듭니다. 그러나 각 조합에 대해 함수를 실행하려고합니다. – datavoredan

+1

'dplyr : .pst()가 예제 함수 인 곳에서 mutate (expand.grid (pets, fruit), function_output = paste (Var1, Var2))' – Megatron

답변

2
levels(interaction(pets, fruit, sep = ', ')) 

OUPUT :

[1] "cat, apple" "dog, apple" "lemur, apple" 
[4] "cat, banana" "dog, banana" "lemur, banana" 
[7] "cat, papaya" "dog, papaya" "lemur, papaya" 
+0

안녕하세요 @datavoredan이 질문이나 답변으로 문제가 해결되면 체크 표시를 클릭하십시오. 이는 해결책을 찾았으며 응답자와 자신에게 어느 정도의 평판을 제공한다는 것을 더 넓은 커뮤니티에 나타냅니다. 이를 수행 할 의무는 없습니다. – mpalanco

1

expand.grid 당신이 원하는 것입니다. ?expand.grid은 다음과 같이 명시합니다.

제공된 벡터 또는 요인의 모든 조합에서 데이터 프레임을 만듭니다.

그래서 당신은 할 수 :

e <- expand.grid(pets, fruit) 
df <- data.frame(col=apply(e,1,function(x) paste0("[",x[1],", ",x[2],"]"))) 
# OR if brackets are not important 
# data.frame(col=apply(e,1,paste,collapse=", ")) 

      # col 
# 1 [dog, banana] 
# 2 [cat, banana] 
# 3 [lemur, banana] 
# 4 [dog, apple] 
# 5 [cat, apple] 
# 6 [lemur, apple] 
# 7 [dog, papaya] 
# 8 [cat, papaya] 
# 9 [lemur, papaya] 

e 이미 두 벡터의 가능한 조합을 포함하는 데이터 프레임을 유의하시기 바랍니다. 다음 행은 형식을 지정하려는 경우에만 필요합니다.

관련 문제