이전 질문 (Working with heterogenous data in a statically typed language)에서 형식이 지정되지 않은 CSV 파일을 조작하는 등의 F #에서 데이터 분석의 표준 작업을 처리하는 방법에 대해 질문했습니다. 동적되는 언어의이 F 번호에F # 형식 공급자 및 데이터 처리
data = load('income.csv')
data.log_income = log(income)
같은 기본 작업에 탁월, 가장 우아한 방법은 물음표 (?) 연산자 것으로 보인다. 불행하게도 우리는 정적 타이핑을 잃어 버렸고 여전히 여기 저기에 타입 애노테이션이 필요합니다.
F #의 가장 흥미로운 미래 기능 중 하나는 Type Providers입니다. 유형 안전성을 최소한으로 잃어 버리면 CSV 유형 공급자가 파일을 동적으로 검사하여 유형을 제공 할 수 있습니다.
그러나 데이터 분석은 일반적으로 중단되지 않습니다. 우리는 종종 작업의 파이프 라인을 통해 데이터를 변형하고 새로운 데이터 세트를 생성합니다. 우리가 데이터를 대부분 조작하는 경우 입력 공급자가 도움이 될 수 있습니까? 예를 들면 다음과 같습니다.
open CSV // Type provider
let data = CSV(file='income.csv') // Type provider magic (syntax?)
let log_income = log(data.income) // works!
이것은 작동하지만 전역 이름 공간을 오염시킵니다. 새로운 변수를 만드는 것보다는 열 추가에 대해 생각하는 것이 더 자연스러운 경우가 있습니다. 할 수있는 방법이 있습니까?
let data.logIncome = log(data.income) // won't work, sadly.
유형 제공자는 목표에서 새 파생 데이터 세트 또는 정리 된 데이터 세트를 만들 때 (?) 연산자를 사용하지 못하도록합니까?
아마도 같은 :
let newdata = colBind data {logIncome = log(data.income)} // ugly, does it work?
다른 아이디어?