How To: Delete columns of data
Peter M. Brigham
pmbrig at gmail.com
Fri Sep 5 10:58:32 EDT 2014
Sorry, left out a crucial line:
put empty into pColsToDelete
before the repeat.
-- Peter
Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig
----------
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 to be removed,
-- for example "2,5,7"
-- or a column range: "3-5"
-- delim: Optional column separator for example "," or "|"
-- if unspecified, defaults to tab.
-- based on a handler by Hugh Senior, Use-LC list
-- requires getItem()
if pColsToDelete = empty then return pData
if "-" is in pColsToDelete then
put getItem(pColsToDelete,1,"-") into firstColNbr
put getItem(pColsToDelete,2,"-") into lastColNbr
put empty into pColsToDelete
repeat with i = firstColNbr to lastColNbr
put i & comma after pColsToDelete
end repeat
delete char -1 of pColsToDelete
end if
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
More information about the use-livecode
mailing list