Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
calculate_r_expression [2026/07/19 22:33]
hermann
calculate_r_expression [2026/07/22 18:13] (current)
hermann
Line 46: Line 46:
 A **table** is transferred as a [[https://​en.wikibooks.org/​wiki/​R_Programming/​Working_with_data_frames|DataFrame]],​ with each column likewise accessed using ''​$''​. Two conventions apply to tables in either direction: A **table** is transferred as a [[https://​en.wikibooks.org/​wiki/​R_Programming/​Working_with_data_frames|DataFrame]],​ with each column likewise accessed using ''​$''​. Two conventions apply to tables in either direction:
  
-  * **Key columns** are marked by an asterisk (''​*''​) appended to their column name — this is the same convention used throughout Dinamica EGO's table representation (see [[calculate_functors#​connecting_data_inputs|Connecting Data Inputs]]). +  * **Key columns** are marked by an asterisk (''​*''​) appended to their column name — this is the same convention used throughout Dinamica EGO's table representation (see [[calculate_functors#​connecting_data_inputs|Connecting Data Inputs]]). A key column can be Real or String, the same as any other column
-  * R automatically converts string columns to **Factors** inside a ''​data.frame'', ​but Dinamica requires plain **Character Vectors**. Always build tables with ''​stringsAsFactors = FALSE''​ to prevent this conversion.+  * Each column'​s type is inferred from its data, the same rule that applies to any table (see [[ego_script#​constants|Constants]]):​ a numeric vector produces a Real column, a character vector produces a String column. ​R automatically converts string columns to **Factors** inside a ''​data.frame'', ​and a Factor is neither of those — Dinamica requires plain **Character Vectors** ​to infer String correctly. Always build tables with ''​stringsAsFactors = FALSE''​ to prevent this conversion.
  
 For further detail on the underlying table representation,​ see [[external_communication#​table|External Communication]]. For further detail on the underlying table representation,​ see [[external_communication#​table|External Communication]].
Line 59: Line 59:
 | ''​outputNumberVector()''​ | Tuple | Accepts any collection of numbers. | ''​outputNumberVector("​myTuple",​ c(1:​10))''​ | | ''​outputNumberVector()''​ | Tuple | Accepts any collection of numbers. | ''​outputNumberVector("​myTuple",​ c(1:​10))''​ |
 | ''​outputString()''​ | String | Accepts any string value. | ''​outputString("​myString",​ "This is a string"​)''​ | | ''​outputString()''​ | String | Accepts any string value. | ''​outputString("​myString",​ "This is a string"​)''​ |
-| ''​outputLookupTable()''​ | [[Lookup Table Type|Lookup Table]] | Requires two number vectors of equal length — one for the keys, one for the values. | ''​outputLookupTable("​myLUT",​ c(1:10), c(1:10) * 10)''​ |+| ''​outputLookupTable()''​ | [[Lookup Table Type|Lookup Table]] | Requires two number vectors of equal length — one for the keys, one for the values. Lookup tables are always Real-typed on both sides; there is no String option. | ''​outputLookupTable("​myLUT",​ c(1:10), c(1:10) * 10)''​ |
 | ''​outputTable()''​ | Table | Requires a table built with the [[https://​www.r-tutor.com/​r-introduction/​data-frame|data.frame]] function, using ''​stringsAsFactors = FALSE''​ as described above. Its optional second parameter (default ''​1''​) sets how many leading columns, from the left, are key columns. | ''​outputTable("​myTable",​ data.frame(State = c("​Massachusetts",​ "​Massachusetts"​),​ City = c("​Boston",​ "​Chelsea"​),​ Population = c(667137, 39398), stringsAsFactors = FALSE), 2)''​ | | ''​outputTable()''​ | Table | Requires a table built with the [[https://​www.r-tutor.com/​r-introduction/​data-frame|data.frame]] function, using ''​stringsAsFactors = FALSE''​ as described above. Its optional second parameter (default ''​1''​) sets how many leading columns, from the left, are key columns. | ''​outputTable("​myTable",​ data.frame(State = c("​Massachusetts",​ "​Massachusetts"​),​ City = c("​Boston",​ "​Chelsea"​),​ Population = c(667137, 39398), stringsAsFactors = FALSE), 2)''​ |
  
Line 193: Line 193:
  
 CalculateRExpression CalculateRExpression
- 
-