2017-10-02 5 views
1

DataFrame의 모든 열을보고 부울을 반환하는 함수를 만들고 싶었 기 때문에 부울 배열로 끝납니다. 여기에 내가 선Julia : 배열 배열 대신 배열을 반환하는 방법?

 array = [a[1] for a in array_of_arrays] 

약간의 낭비를 찾을 제외하고이 작동 코드

# some random dataframe 
df = DataFrame([1:3, 4:6]) 

# a function that returns an array of boolean 
function some_bool_fn(df)::Array{Bool} 
    array_of_arrays = colwise(df) do sdd3 
     # for illustration only 
     return true 
    end 
    array = [a[1] for a in array_of_arrays] 
    return array 
end 

# calling the function 
some_bool_fn(dd3) 

입니다. 기본적으로 배열의 배열을 colwise의 출력으로 얻습니다. 그래서 배열의 배열을 간단한 bool 배열에 넣어야했습니다. 이 코드 줄을 피할 수 있도록 코드를 작성하는 방법이 있습니까?

+2

X-심판 : https://github.com/JuliaData/DataFrames.jl/commit/5f611bf480632507e15bb2c96bf39aedb71d6d06 – Gnimuc

답변

3

@Gnimuc가 주석을 달았으므로이 동작이 변경되고 있습니다.

마스터 브랜치 : https://github.com/JuliaData/DataFrames.jl/blob/master/src/groupeddataframe/grouping.jl#L241을 보면 다른 버전을 볼 수 있습니다. 당신은 아마 그것을 복사 할 수 있습니다 :

mycolwise(f, d::AbstractDataFrame) = [f(d[i]) for i in 1:ncol(d)] 
+0

어떻게 내가이 버전의 사용을해야합니까? 그것은 Pkg.checkout ("DataFrames") – xiaodai

+1

입니다. @xiaodai 다른 파손으로 고통 받기 쉽기 때문에 작은 기능 (단지 한 줄 코드 변경)에 대해 DataFrames의 마스터를 체크하는 것은 과도하다고 생각합니다. Liso가 대답에서 제안한 것처럼, 클라우드는 또 다른'colwise '를 정의하거나 직접'DataFrames.colwise'를 덮어 씁니다. – Gnimuc

+1

@Gnimuc 정의 된 메서드가 더 많기 때문에이 onLiner 만 덮어 쓰는 것만으로는 충분하지 않습니다. DataFrames 버전에 따라 조건부 컴파일을하는 것이 좋을 수도 있습니다. (이 버전 정보를 얻는 방법은?) – Liso