Remove specified non-numeric rows In case there's any doubt: Nan = Non-numeric datatype for the purposes of this challenge. 



Write a program or function that takes a matrix / array as input, as well as a list of column indices.

The challenge is to remove the rows where all elements in the specified columns are Nan. It doesn't matter if other elements in the row are numeric or not. The following examples will hopefully make this more clear (it's one-indexed):

Input array:
    16   NaN     3    13
     5    11   NaN     8
   NaN     7   NaN    12
     4    14   -15     1

Input column index: [1 3]

Output array:
16   NaN     3    13
 5    11   NaN     8
 4    14   -15     1

----

Input array:
    16   NaN     3    13
     5    11   NaN     8
   NaN     7   NaN    12
     4    14   -15     1

Input column index: 3

Output array =
    16   NaN     3    13
     4    14   -15     1

----

Input array:
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

Input column index: 1 2 4

Output array:
 []


Rules and clarifications:


The matrix will always be non-empty
The numeric values will be finite, but not necessarily integers or positive values 
The column index vector can be empty (in which case no rows will be removed)
The column index will never have values exceeding the matrix dimensions
You can assume there won't be duplicates in the column index list
You can choose if you want to use zero- or one-indexed values (please specify)
You can take the input on any convenient format


Array as list of lists is OK. The column indices can be separate arguments

ans = and similar is accepted in output 
You are free to choose what type of non-numeric datatype you want to use


It should be impossible to perform arithmetic operations with this datatype, or convert it to a finite number using functions such as float(x). 



This is code golf, so shortest code in bytes win.
JavaScript (ES6), 48 46 bytes

(a,l)=&gt;a.filter(r=&gt;l.some(c=&gt;r[a=0,c]&lt;1/0)||a)


Explanation

Expects an array of rows as arrays, and an array of 0-indexed numbers for the columns to check. Returns an array of arrays.

Straight-forward filter and some. Checks for NaN by using n &lt; Infinity (true for finite numbers, false for NaNs).



var solution =

(a,l)=&gt;
  a.filter(r=&gt;     // for each row r
    l.some(c=&gt;     // for each column to check c
      r[a=0,       // set a to false so we know the some was executed
        c]&lt;1/0     // if any are not NaN, do not remove the row
    )
    ||a            // default to a because if l is of length 0, some returns false but
  )                //     we must return true
&lt;textarea id="matrix" rows="5" cols="40"&gt;16 NaN 3 13
5 11 NaN 8
NaN 7 NaN 12
4 14 -15 1&lt;/textarea&gt;&lt;br /&gt;
&lt;input type="text" id="columns" value="0 2" /&gt;
&lt;button onclick="result.textContent=solution(matrix.value.split('\n').map(l=&gt;l.split(' ').map(n=&gt;+n)),(columns.value.match(/\d+/g)||[]).map(n=&gt;+n)).join('\n')"&gt;Go&lt;/button&gt;
&lt;pre id="result"&gt;&lt;/pre&gt;