How To: Delete columns of data

Peter M. Brigham pmbrig at gmail.com
Fri Sep 5 19:12:14 EDT 2014


Yes. You split pData, which will alter the original table, and you don't restore it. Don't reference the parameter.

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig

On Sep 5, 2014, at 6:02 PM, Chris Heidecker wrote:

> I think you should not use @pData, just pData should be enough.
> You’re not using it to return the data but are modifying by splitting but not combining the data.
> 
> regards,
> Chris Heidecker
> 
> Op 5 sep. 2014, om 20:37 heeft Michael Doub <mikedoub at gmail.com> het volgende geschreven:
> 
>> just to complete your library, here is a function that will extract the listed column in the order that you 
>> specify but it does not modify the original data.
>> 
>> -= Mike
>> 
>> 
>> 
>> function extractColumns @pData,pColsToReturn,pDelim
>> -- Extract specified columns from a table in order
>> -- Syntax: extractColumns <data>,<cols>[,<delim>]
>> --     data: Specifies the data to parse.
>> --     cols: A comma separated list of columns or column ranges to be returned in order
>> --         for example "2,7,5"
>> --         or a accending column range: "3-5"
>> --         of a decending column range: "5-3"
>> --         or a combination "2,4-5,7,11-9"
>> --     delim: Optional column separator for example "," or "|"
>> --         if unspecified, defaults to tab.
>> -- based on a handler by Hugh Senior and Peter M. Brigham, Use-LC list
>> 
>> -- requires getItem()
>> 
>> if pColsToReturn = empty then return pData
>> repeat for each item pCol in pColsToReturn
>>    if "-" is in pCol then 
>>       put getItem(pCol,1,"-") into firstColNbr
>>       put getItem(pCol,2,"-") into lastColNbr
>>       if firstColNbr < lastColNbr then
>>          repeat with i = firstColNbr to lastColNbr
>>             put i & comma after pColsToReturnExpanded
>>          end repeat
>>       else
>>          repeat with i = firstColNbr down to lastColNbr
>>             put i & comma after pColsToReturnExpanded
>>          end repeat
>>       end if
>>    else
>>       put pCol & comma after pColsToReturnExpanded
>>    end if
>> end repeat
>> put char 1 to -2 of pColsToReturnExpanded into pColsToReturn
>> if pDelim = empty then put tab into pDelim
>> set the columnDelimiter to pDelim
>> split pData by column
>> put item 2 of extents(pData) into tMax
>> repeat for each item n in pColsToReturn
>>       add 1 to x
>>       put pData[n] into rData[x]
>> end repeat
>> combine rData by column
>> return rData
>> end extractColumns
>> 
>> 
>> On Sep 5, 2014, at 1:51 PM, Michael Doub <mikedoub at gmail.com> wrote:
>> 
>>> Here is an even more general version:
>>> 
>>> function deleteColumns pData,pColsToDelete,pDelim
>>> -- delete specified columns from a table
>>> -- Syntax: deleteColumns <data>,<cols>[,<delim>]
>>> --     data: Specifies the data to parse.
>>> --     cols: A comma separated list of columns or column ranges to be removed,
>>> --         for example "2,5,7"
>>> --         or a column range: "3-5"
>>> --         or a combination "2,4-5,7,9-11,"
>>> --     delim: Optional column separator for example "," or "|"
>>> --         if unspecified, defaults to tab.
>>> -- based on a handler by Hugh Senior and Peter M. Brigham, Use-LC list
>>> 
>>> -- requires getItem()
>>> 
>>> if pColsToDelete = empty then return pData
>>> repeat for each item pCol in pColsToDelete
>>>   if "-" is in pCol then 
>>>      put getItem(pCol,1,"-") into firstColNbr
>>>      put getItem(pCol,2,"-") into lastColNbr
>>>      repeat with i = firstColNbr to lastColNbr
>>>         put i & comma after pColsToDeleteExpanded
>>>      end repeat
>>>   else
>>>      put pCol & comma after pColsToDeleteExpanded
>>>   end if
>>> end repeat
>>> put char 1 to -2 of pColsToDeleteExpanded into pColsToDelete
>>> if pDelim = empty then put tab into pDelim
>>> set the columnDelimiter to pDelim
>>> split pData by column
>>> put item 2 of extents(pData) into tMax
>>> repeat with n=1 to tMax
>>>   if n is NOT among the items of pColsToDelete then
>>>      add 1 to x
>>>      put pData[n] into pData[x]
>>>   end if
>>> end repeat
>>> repeat with n=x+1 to tMax
>>>   delete local pData[n]
>>> end repeat
>>> combine pData by column
>>> return pData
>>> end deleteColumns
>>> 
>>> function getItem tList,tIndex,tDelim
>>> -- returns item # tIndex of tList, given itemdelimiter = tDelim
>>> -- could just "get item tIndex of tList" in the calling handler but
>>> --    then have to set and restore the itemDelimiter, so this is less hassle
>>> -- defaults to tDelim = comma
>>> 
>>> if tDelim = empty then put comma into tDelim
>>> set the itemdelimiter to tDelim
>>> return item tIndex of tList
>>> end getItem
>>> 
>>> 
>>> 
>>> On Sep 5, 2014, at 10:58 AM, Peter M. Brigham <pmbrig at gmail.com> wrote:
>>> 
>>>> Peter M. Brigham
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list