Skip to content

DataFrameTypeDetector now works with nil#107

Merged
olekscode merged 1 commit into
PolyMathOrg:masterfrom
AtharvaKhare:typeDetectorNils
Jul 11, 2019
Merged

DataFrameTypeDetector now works with nil#107
olekscode merged 1 commit into
PolyMathOrg:masterfrom
AtharvaKhare:typeDetectorNils

Conversation

@AtharvaKhare

Copy link
Copy Markdown
Contributor

Also added relevant tests.

Fixes #66.

Also added relevant tests
{ #category : #testing }
DataFrameTypeDetector >> canAllBeDateAndTime: aDataSeries [
[ aDataSeries do: #asDateAndTime ]
[ aDataSeries do: [ :ele | ele isNil ifFalse: [ ele asDateAndTime ]] ]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here and in the following, I'd use ele ifNotNil: rather than ele isNil ifFalse: .


^ aDataSeries
detect: [ :each | [ (regex matches: each) not ] on: Error do: [ ^ false ] ]
detect: [ :each | [ each isNil ifTrue: [ false ] ifFalse: [ (regex matches: each) not ]] on: Error do: [ ^ false ] ]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simlarly: each ifNil: [ false ] ifNotNil: [...]

DataFrameTypeDetector >> canAnyBeFloat: aDataSeries [
^ aDataSeries
detect: [ :each | each asNumber isFloat ]
detect: [ :each | each isNil ifTrue: [ false ] ifFalse: [ (each asNumber isFloat) ] ]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simpler: each isNotNil and: [ each asNumber isFloat ].

^ aDataSeries collect: [ :each | each = 'true' ]
^ aDataSeries collect: [ :each |
each isNil
ifFalse: [ each = 'true' ] ]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once again: ifNotNil: is clearer than isNil ifFalse:.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However, seeing all the following cases I wonder if it would be better to have a method #collectNonNils and use that instead of nil-testing in each particular use case.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll add collectNonNils since it makes more sense. PR 102 has removeNils already so we can do dataSeries deepCopy removeNils, but one with collect would be better.

@olekscode olekscode merged commit feea7f4 into PolyMathOrg:master Jul 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrameTypeDetector can't work with missing values

3 participants