我想删除具有NA值的列。
例如,当array [i,j]有NA时,我想删除第i列。 find2DIndex找到NA值,removeNA删除第i列。
尽管努力去除NA值,但数组中仍然存在NA值。
private static Point find2DIndex(Object[][] array, Object search) {
if (search == null || array == null) return null;
for (int rowIndex = 0; rowIndex < array.length; rowIndex++ ) {
Object[] row = array[rowIndex];
if (row != null) {
for (int columnIndex = 0; columnIndex < row.length; columnIndex++) {
if (search.equals(row[columnIndex])) {
return new Point(rowIndex, columnIndex);
}
}
}
}
return null;
}
public static String[][] removeNA(String[][] str){
Point index = new Point();
if((index= find2DIndex(str,"NA"))!=null){
for(int j=0;j<49;j++){
for(int i=index.y;i<str.length/49;i++){
str[j][i]= str[j][i+1];
}//j열 모두 지우기
}
}
return str;
}
public static void main(String[] args) throws IOException {
String str = readCSV(new File("D:/sample.csv"));
String[] strArr = parse(str); // String 배열에 차곡차곡 담겨서 나온다.
String[][] Array2D = new String[27][45];
for(int i=0; i<45;i++){
for(int j=0;j<27;j++){
String k = strArr[i*27+j];
Array2D[j][i]= k;
}
}
答案 0 :(得分:1)
您不能更改现有Array数据结构的维度,除非您使用新维度销毁并重建它(您必须重新初始化并重新填充)。
你可以尝试这样的事情。
public int[][] deleteColumn(int[][] args,int col)
{
int[][] nargs;
if(args != null && args.length > 0 && args[0].length > col)
{
nargs = new int[args.length][args[0].length-1];
for(int i=0; i<args.length; i++)
{
int newColIdx = 0;
for(int j=0; j<args[i].length; j++)
{
if(j != col)
{
nargs[i][newColIdx] = args[i][j];
newColIdx++;
}
}
}
}
return nargs;
}