Как можно условно удалить целые столбцы из двумерного массива в Ruby? - PullRequest
1 голос
/ 17 декабря 2008

У меня есть несколько больших CSV-файлов с тысячами столбцов, которые мне нужно импортировать, а затем удалить все столбцы на основе содержимого столбца. Есть ли простой способ справиться с этим в Ruby?

Я мог бы транспонировать данные, а затем просто удалять строки, но мне было интересно, есть ли более синтаксически-сладкий способ сделать это.

Ответы [ 4 ]

2 голосов
/ 17 декабря 2008

Вам нужно перебирать строки и удалять столбцы с помощью Array#slice!.

Что-то вроде:

my_array.each do |row|
  row.slice!(3) if <insert condition>
end

должен это сделать.

0 голосов
/ 19 декабря 2008

В итоге я использовал transpose, а затем использовал reverse_each для работы с нижним срезом строки! на строках, которые нужно было удалить. Спасибо за помощь.

0 голосов
/ 17 декабря 2008

Снимок в темноте, но если критерии достаточно просты, и вы можете каким-то образом выбрать данные, чтобы увидеть, какие столбцы нужно удалить, возможно, вы можете пропустить импорт столбцов, если это вообще возможно должно быть быстрее, чем нарезка, что иным способом.

0 голосов
/ 17 декабря 2008

Поскольку вам нужно назначить все столбцы в csv столбцам в базе данных, вам просто нужно игнорировать столбцы, которые вам не нужны в csv. Это сообщение в блоге имеет хороший пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...