Hello
I need to horizontally concatenate some string vectors (say , b, c) and some numeric vectors (say x and y)
In older versions of gauss I could do a~b~x~c~y but I think I cannot do that now. What should I do
1 Answer
0
The concatenation rules in GAUSS have not changed. Many years ago, before GAUSS supported string arrays, it was common to place string data inside of a regular GAUSS matrix. GAUSS will still allow you to do this. For example:
//create character vector using //matrix vertical concatenation operator '|' city = "LA" | "Miami" | "New York" | "Seattle";
The variable city above is a character matrix. That means that it is character data stored inside of a GAUSS matrix. The statement above made a character matrix, because the matrix concatenation operator was used. We can create a string array by using the string vertical concatenation operator, $|. For example:
//create string array using //string vertical concatenation operator '$|' city_sa = "LA" $| "Miami" $| "New York" $| "Seattle";
What is the difference between a character vector and a string array in GAUSS?
1. Character data
Since character vectors are text stored inside of a GAUSS matrix, they are easy to mix with numeric data. For example, you can create a mixed matrix by using the matrix concatenation operators, for example:
//create character vector using //matrix vertical concatenation operator '|' city = "LA" | "Miami" | "New York" | "Seattle"; population = { 3.8, 0.4, 8.2, 0.6 }; //create 4x2 matrix city_data = city ~ population;
One thing to keep in mind with character data is that you must you a $ in front of the variable to print the data as character data. For example, if we try to concatenate and print the data above in one compound statement:
print city~population;
we will get this output:
+DEN 3.8 +DEN 0.4 3.7879048e+209 8.2 9.5338416e-307 0.6
If we want GAUSS to treat the first column as character data when printing, we need to use the $ like this:
print $city;
to receive this output:
LA Miami New York Seattle
Finally, since character matrices are stored inside of a GAUSS matrix, each word only has 8 bytes (the size of a double precision floating point value). This means that you cannot place words with more than 8 characters inside of a character vector element.
2. String arrays
GAUSS string arrays support words or phrases of any length. So if you need to use longer variable names, then you should create a string array. You can create a string array by either using the string concatenation operator, or by using the string keyword. For example, either of the statements below will create the same output:
city_sa = { "LA", "Miami", "New York", "Seattle" }; city_sa = "LA" $| "Miami" $| "New York" $| "Seattle";
Since string arrays are created to carry character data, you do not need to use the $ operator to print them.
print city_sa;
will return the following output:
LA Miami New York Seattle
However, string arrays cannot be mixed in the same element with a matrix. You may keep the string array and its corresponding data as separate GAUSS variables, or keep them together by making a simple structure in GAUSS.
Your Answer
1 Answer
The concatenation rules in GAUSS have not changed. Many years ago, before GAUSS supported string arrays, it was common to place string data inside of a regular GAUSS matrix. GAUSS will still allow you to do this. For example:
//create character vector using //matrix vertical concatenation operator '|' city = "LA" | "Miami" | "New York" | "Seattle";
The variable city above is a character matrix. That means that it is character data stored inside of a GAUSS matrix. The statement above made a character matrix, because the matrix concatenation operator was used. We can create a string array by using the string vertical concatenation operator, $|. For example:
//create string array using //string vertical concatenation operator '$|' city_sa = "LA" $| "Miami" $| "New York" $| "Seattle";
What is the difference between a character vector and a string array in GAUSS?
1. Character data
Since character vectors are text stored inside of a GAUSS matrix, they are easy to mix with numeric data. For example, you can create a mixed matrix by using the matrix concatenation operators, for example:
//create character vector using //matrix vertical concatenation operator '|' city = "LA" | "Miami" | "New York" | "Seattle"; population = { 3.8, 0.4, 8.2, 0.6 }; //create 4x2 matrix city_data = city ~ population;
One thing to keep in mind with character data is that you must you a $ in front of the variable to print the data as character data. For example, if we try to concatenate and print the data above in one compound statement:
print city~population;
we will get this output:
+DEN 3.8 +DEN 0.4 3.7879048e+209 8.2 9.5338416e-307 0.6
If we want GAUSS to treat the first column as character data when printing, we need to use the $ like this:
print $city;
to receive this output:
LA Miami New York Seattle
Finally, since character matrices are stored inside of a GAUSS matrix, each word only has 8 bytes (the size of a double precision floating point value). This means that you cannot place words with more than 8 characters inside of a character vector element.
2. String arrays
GAUSS string arrays support words or phrases of any length. So if you need to use longer variable names, then you should create a string array. You can create a string array by either using the string concatenation operator, or by using the string keyword. For example, either of the statements below will create the same output:
city_sa = { "LA", "Miami", "New York", "Seattle" }; city_sa = "LA" $| "Miami" $| "New York" $| "Seattle";
Since string arrays are created to carry character data, you do not need to use the $ operator to print them.
print city_sa;
will return the following output:
LA Miami New York Seattle
However, string arrays cannot be mixed in the same element with a matrix. You may keep the string array and its corresponding data as separate GAUSS variables, or keep them together by making a simple structure in GAUSS.