Encode a subset of character columns using base64 encoding.

encodeCharColumns(df, columnNames = NULL)

Arguments

df

A dataframe

columnNames

The columns which are to be encoded. If NULL, all character columns are detected and encoded.

Value

A dataframe

Details

Texual data in dataframes with comman seperators like ',' create problems writing to disk and reading back. This function encodes the a subset of character columns using base64 encoding where the resulting dataframe might be written to disk with ',' separator. The function 'decodeCharCols' decodes the encoded character columns are restores back the actual character columns.

Examples

iris2 <- iris iris2$Species <- as.character(iris2$Species) iris_enc <- encodeCharColumns(iris2)
#> Encoded these columns: Species
iris_enc
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 c2V0b3Nh #> 2 4.9 3.0 1.4 0.2 c2V0b3Nh #> 3 4.7 3.2 1.3 0.2 c2V0b3Nh #> 4 4.6 3.1 1.5 0.2 c2V0b3Nh #> 5 5.0 3.6 1.4 0.2 c2V0b3Nh #> 6 5.4 3.9 1.7 0.4 c2V0b3Nh #> 7 4.6 3.4 1.4 0.3 c2V0b3Nh #> 8 5.0 3.4 1.5 0.2 c2V0b3Nh #> 9 4.4 2.9 1.4 0.2 c2V0b3Nh #> 10 4.9 3.1 1.5 0.1 c2V0b3Nh #> 11 5.4 3.7 1.5 0.2 c2V0b3Nh #> 12 4.8 3.4 1.6 0.2 c2V0b3Nh #> 13 4.8 3.0 1.4 0.1 c2V0b3Nh #> 14 4.3 3.0 1.1 0.1 c2V0b3Nh #> 15 5.8 4.0 1.2 0.2 c2V0b3Nh #> 16 5.7 4.4 1.5 0.4 c2V0b3Nh #> 17 5.4 3.9 1.3 0.4 c2V0b3Nh #> 18 5.1 3.5 1.4 0.3 c2V0b3Nh #> 19 5.7 3.8 1.7 0.3 c2V0b3Nh #> 20 5.1 3.8 1.5 0.3 c2V0b3Nh #> 21 5.4 3.4 1.7 0.2 c2V0b3Nh #> 22 5.1 3.7 1.5 0.4 c2V0b3Nh #> 23 4.6 3.6 1.0 0.2 c2V0b3Nh #> 24 5.1 3.3 1.7 0.5 c2V0b3Nh #> 25 4.8 3.4 1.9 0.2 c2V0b3Nh #> 26 5.0 3.0 1.6 0.2 c2V0b3Nh #> 27 5.0 3.4 1.6 0.4 c2V0b3Nh #> 28 5.2 3.5 1.5 0.2 c2V0b3Nh #> 29 5.2 3.4 1.4 0.2 c2V0b3Nh #> 30 4.7 3.2 1.6 0.2 c2V0b3Nh #> 31 4.8 3.1 1.6 0.2 c2V0b3Nh #> 32 5.4 3.4 1.5 0.4 c2V0b3Nh #> 33 5.2 4.1 1.5 0.1 c2V0b3Nh #> 34 5.5 4.2 1.4 0.2 c2V0b3Nh #> 35 4.9 3.1 1.5 0.2 c2V0b3Nh #> 36 5.0 3.2 1.2 0.2 c2V0b3Nh #> 37 5.5 3.5 1.3 0.2 c2V0b3Nh #> 38 4.9 3.6 1.4 0.1 c2V0b3Nh #> 39 4.4 3.0 1.3 0.2 c2V0b3Nh #> 40 5.1 3.4 1.5 0.2 c2V0b3Nh #> 41 5.0 3.5 1.3 0.3 c2V0b3Nh #> 42 4.5 2.3 1.3 0.3 c2V0b3Nh #> 43 4.4 3.2 1.3 0.2 c2V0b3Nh #> 44 5.0 3.5 1.6 0.6 c2V0b3Nh #> 45 5.1 3.8 1.9 0.4 c2V0b3Nh #> 46 4.8 3.0 1.4 0.3 c2V0b3Nh #> 47 5.1 3.8 1.6 0.2 c2V0b3Nh #> 48 4.6 3.2 1.4 0.2 c2V0b3Nh #> 49 5.3 3.7 1.5 0.2 c2V0b3Nh #> 50 5.0 3.3 1.4 0.2 c2V0b3Nh #> 51 7.0 3.2 4.7 1.4 dmVyc2ljb2xvcg== #> 52 6.4 3.2 4.5 1.5 dmVyc2ljb2xvcg== #> 53 6.9 3.1 4.9 1.5 dmVyc2ljb2xvcg== #> 54 5.5 2.3 4.0 1.3 dmVyc2ljb2xvcg== #> 55 6.5 2.8 4.6 1.5 dmVyc2ljb2xvcg== #> 56 5.7 2.8 4.5 1.3 dmVyc2ljb2xvcg== #> 57 6.3 3.3 4.7 1.6 dmVyc2ljb2xvcg== #> 58 4.9 2.4 3.3 1.0 dmVyc2ljb2xvcg== #> 59 6.6 2.9 4.6 1.3 dmVyc2ljb2xvcg== #> 60 5.2 2.7 3.9 1.4 dmVyc2ljb2xvcg== #> 61 5.0 2.0 3.5 1.0 dmVyc2ljb2xvcg== #> 62 5.9 3.0 4.2 1.5 dmVyc2ljb2xvcg== #> 63 6.0 2.2 4.0 1.0 dmVyc2ljb2xvcg== #> 64 6.1 2.9 4.7 1.4 dmVyc2ljb2xvcg== #> 65 5.6 2.9 3.6 1.3 dmVyc2ljb2xvcg== #> 66 6.7 3.1 4.4 1.4 dmVyc2ljb2xvcg== #> 67 5.6 3.0 4.5 1.5 dmVyc2ljb2xvcg== #> 68 5.8 2.7 4.1 1.0 dmVyc2ljb2xvcg== #> 69 6.2 2.2 4.5 1.5 dmVyc2ljb2xvcg== #> 70 5.6 2.5 3.9 1.1 dmVyc2ljb2xvcg== #> 71 5.9 3.2 4.8 1.8 dmVyc2ljb2xvcg== #> 72 6.1 2.8 4.0 1.3 dmVyc2ljb2xvcg== #> 73 6.3 2.5 4.9 1.5 dmVyc2ljb2xvcg== #> 74 6.1 2.8 4.7 1.2 dmVyc2ljb2xvcg== #> 75 6.4 2.9 4.3 1.3 dmVyc2ljb2xvcg== #> 76 6.6 3.0 4.4 1.4 dmVyc2ljb2xvcg== #> 77 6.8 2.8 4.8 1.4 dmVyc2ljb2xvcg== #> 78 6.7 3.0 5.0 1.7 dmVyc2ljb2xvcg== #> 79 6.0 2.9 4.5 1.5 dmVyc2ljb2xvcg== #> 80 5.7 2.6 3.5 1.0 dmVyc2ljb2xvcg== #> 81 5.5 2.4 3.8 1.1 dmVyc2ljb2xvcg== #> 82 5.5 2.4 3.7 1.0 dmVyc2ljb2xvcg== #> 83 5.8 2.7 3.9 1.2 dmVyc2ljb2xvcg== #> 84 6.0 2.7 5.1 1.6 dmVyc2ljb2xvcg== #> 85 5.4 3.0 4.5 1.5 dmVyc2ljb2xvcg== #> 86 6.0 3.4 4.5 1.6 dmVyc2ljb2xvcg== #> 87 6.7 3.1 4.7 1.5 dmVyc2ljb2xvcg== #> 88 6.3 2.3 4.4 1.3 dmVyc2ljb2xvcg== #> 89 5.6 3.0 4.1 1.3 dmVyc2ljb2xvcg== #> 90 5.5 2.5 4.0 1.3 dmVyc2ljb2xvcg== #> 91 5.5 2.6 4.4 1.2 dmVyc2ljb2xvcg== #> 92 6.1 3.0 4.6 1.4 dmVyc2ljb2xvcg== #> 93 5.8 2.6 4.0 1.2 dmVyc2ljb2xvcg== #> 94 5.0 2.3 3.3 1.0 dmVyc2ljb2xvcg== #> 95 5.6 2.7 4.2 1.3 dmVyc2ljb2xvcg== #> 96 5.7 3.0 4.2 1.2 dmVyc2ljb2xvcg== #> 97 5.7 2.9 4.2 1.3 dmVyc2ljb2xvcg== #> 98 6.2 2.9 4.3 1.3 dmVyc2ljb2xvcg== #> 99 5.1 2.5 3.0 1.1 dmVyc2ljb2xvcg== #> 100 5.7 2.8 4.1 1.3 dmVyc2ljb2xvcg== #> 101 6.3 3.3 6.0 2.5 dmlyZ2luaWNh #> 102 5.8 2.7 5.1 1.9 dmlyZ2luaWNh #> 103 7.1 3.0 5.9 2.1 dmlyZ2luaWNh #> 104 6.3 2.9 5.6 1.8 dmlyZ2luaWNh #> 105 6.5 3.0 5.8 2.2 dmlyZ2luaWNh #> 106 7.6 3.0 6.6 2.1 dmlyZ2luaWNh #> 107 4.9 2.5 4.5 1.7 dmlyZ2luaWNh #> 108 7.3 2.9 6.3 1.8 dmlyZ2luaWNh #> 109 6.7 2.5 5.8 1.8 dmlyZ2luaWNh #> 110 7.2 3.6 6.1 2.5 dmlyZ2luaWNh #> 111 6.5 3.2 5.1 2.0 dmlyZ2luaWNh #> 112 6.4 2.7 5.3 1.9 dmlyZ2luaWNh #> 113 6.8 3.0 5.5 2.1 dmlyZ2luaWNh #> 114 5.7 2.5 5.0 2.0 dmlyZ2luaWNh #> 115 5.8 2.8 5.1 2.4 dmlyZ2luaWNh #> 116 6.4 3.2 5.3 2.3 dmlyZ2luaWNh #> 117 6.5 3.0 5.5 1.8 dmlyZ2luaWNh #> 118 7.7 3.8 6.7 2.2 dmlyZ2luaWNh #> 119 7.7 2.6 6.9 2.3 dmlyZ2luaWNh #> 120 6.0 2.2 5.0 1.5 dmlyZ2luaWNh #> 121 6.9 3.2 5.7 2.3 dmlyZ2luaWNh #> 122 5.6 2.8 4.9 2.0 dmlyZ2luaWNh #> 123 7.7 2.8 6.7 2.0 dmlyZ2luaWNh #> 124 6.3 2.7 4.9 1.8 dmlyZ2luaWNh #> 125 6.7 3.3 5.7 2.1 dmlyZ2luaWNh #> 126 7.2 3.2 6.0 1.8 dmlyZ2luaWNh #> 127 6.2 2.8 4.8 1.8 dmlyZ2luaWNh #> 128 6.1 3.0 4.9 1.8 dmlyZ2luaWNh #> 129 6.4 2.8 5.6 2.1 dmlyZ2luaWNh #> 130 7.2 3.0 5.8 1.6 dmlyZ2luaWNh #> 131 7.4 2.8 6.1 1.9 dmlyZ2luaWNh #> 132 7.9 3.8 6.4 2.0 dmlyZ2luaWNh #> 133 6.4 2.8 5.6 2.2 dmlyZ2luaWNh #> 134 6.3 2.8 5.1 1.5 dmlyZ2luaWNh #> 135 6.1 2.6 5.6 1.4 dmlyZ2luaWNh #> 136 7.7 3.0 6.1 2.3 dmlyZ2luaWNh #> 137 6.3 3.4 5.6 2.4 dmlyZ2luaWNh #> 138 6.4 3.1 5.5 1.8 dmlyZ2luaWNh #> 139 6.0 3.0 4.8 1.8 dmlyZ2luaWNh #> 140 6.9 3.1 5.4 2.1 dmlyZ2luaWNh #> 141 6.7 3.1 5.6 2.4 dmlyZ2luaWNh #> 142 6.9 3.1 5.1 2.3 dmlyZ2luaWNh #> 143 5.8 2.7 5.1 1.9 dmlyZ2luaWNh #> 144 6.8 3.2 5.9 2.3 dmlyZ2luaWNh #> 145 6.7 3.3 5.7 2.5 dmlyZ2luaWNh #> 146 6.7 3.0 5.2 2.3 dmlyZ2luaWNh #> 147 6.3 2.5 5.0 1.9 dmlyZ2luaWNh #> 148 6.5 3.0 5.2 2.0 dmlyZ2luaWNh #> 149 6.2 3.4 5.4 2.3 dmlyZ2luaWNh #> 150 5.9 3.0 5.1 1.8 dmlyZ2luaWNh
unique(iris_enc$Species)
#> [1] "c2V0b3Nh" "dmVyc2ljb2xvcg==" "dmlyZ2luaWNh"
iris_dec <- decodeCharColumns(iris_enc, "Species") iris_dec
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5.0 3.6 1.4 0.2 setosa #> 6 5.4 3.9 1.7 0.4 setosa #> 7 4.6 3.4 1.4 0.3 setosa #> 8 5.0 3.4 1.5 0.2 setosa #> 9 4.4 2.9 1.4 0.2 setosa #> 10 4.9 3.1 1.5 0.1 setosa #> 11 5.4 3.7 1.5 0.2 setosa #> 12 4.8 3.4 1.6 0.2 setosa #> 13 4.8 3.0 1.4 0.1 setosa #> 14 4.3 3.0 1.1 0.1 setosa #> 15 5.8 4.0 1.2 0.2 setosa #> 16 5.7 4.4 1.5 0.4 setosa #> 17 5.4 3.9 1.3 0.4 setosa #> 18 5.1 3.5 1.4 0.3 setosa #> 19 5.7 3.8 1.7 0.3 setosa #> 20 5.1 3.8 1.5 0.3 setosa #> 21 5.4 3.4 1.7 0.2 setosa #> 22 5.1 3.7 1.5 0.4 setosa #> 23 4.6 3.6 1.0 0.2 setosa #> 24 5.1 3.3 1.7 0.5 setosa #> 25 4.8 3.4 1.9 0.2 setosa #> 26 5.0 3.0 1.6 0.2 setosa #> 27 5.0 3.4 1.6 0.4 setosa #> 28 5.2 3.5 1.5 0.2 setosa #> 29 5.2 3.4 1.4 0.2 setosa #> 30 4.7 3.2 1.6 0.2 setosa #> 31 4.8 3.1 1.6 0.2 setosa #> 32 5.4 3.4 1.5 0.4 setosa #> 33 5.2 4.1 1.5 0.1 setosa #> 34 5.5 4.2 1.4 0.2 setosa #> 35 4.9 3.1 1.5 0.2 setosa #> 36 5.0 3.2 1.2 0.2 setosa #> 37 5.5 3.5 1.3 0.2 setosa #> 38 4.9 3.6 1.4 0.1 setosa #> 39 4.4 3.0 1.3 0.2 setosa #> 40 5.1 3.4 1.5 0.2 setosa #> 41 5.0 3.5 1.3 0.3 setosa #> 42 4.5 2.3 1.3 0.3 setosa #> 43 4.4 3.2 1.3 0.2 setosa #> 44 5.0 3.5 1.6 0.6 setosa #> 45 5.1 3.8 1.9 0.4 setosa #> 46 4.8 3.0 1.4 0.3 setosa #> 47 5.1 3.8 1.6 0.2 setosa #> 48 4.6 3.2 1.4 0.2 setosa #> 49 5.3 3.7 1.5 0.2 setosa #> 50 5.0 3.3 1.4 0.2 setosa #> 51 7.0 3.2 4.7 1.4 versicolor #> 52 6.4 3.2 4.5 1.5 versicolor #> 53 6.9 3.1 4.9 1.5 versicolor #> 54 5.5 2.3 4.0 1.3 versicolor #> 55 6.5 2.8 4.6 1.5 versicolor #> 56 5.7 2.8 4.5 1.3 versicolor #> 57 6.3 3.3 4.7 1.6 versicolor #> 58 4.9 2.4 3.3 1.0 versicolor #> 59 6.6 2.9 4.6 1.3 versicolor #> 60 5.2 2.7 3.9 1.4 versicolor #> 61 5.0 2.0 3.5 1.0 versicolor #> 62 5.9 3.0 4.2 1.5 versicolor #> 63 6.0 2.2 4.0 1.0 versicolor #> 64 6.1 2.9 4.7 1.4 versicolor #> 65 5.6 2.9 3.6 1.3 versicolor #> 66 6.7 3.1 4.4 1.4 versicolor #> 67 5.6 3.0 4.5 1.5 versicolor #> 68 5.8 2.7 4.1 1.0 versicolor #> 69 6.2 2.2 4.5 1.5 versicolor #> 70 5.6 2.5 3.9 1.1 versicolor #> 71 5.9 3.2 4.8 1.8 versicolor #> 72 6.1 2.8 4.0 1.3 versicolor #> 73 6.3 2.5 4.9 1.5 versicolor #> 74 6.1 2.8 4.7 1.2 versicolor #> 75 6.4 2.9 4.3 1.3 versicolor #> 76 6.6 3.0 4.4 1.4 versicolor #> 77 6.8 2.8 4.8 1.4 versicolor #> 78 6.7 3.0 5.0 1.7 versicolor #> 79 6.0 2.9 4.5 1.5 versicolor #> 80 5.7 2.6 3.5 1.0 versicolor #> 81 5.5 2.4 3.8 1.1 versicolor #> 82 5.5 2.4 3.7 1.0 versicolor #> 83 5.8 2.7 3.9 1.2 versicolor #> 84 6.0 2.7 5.1 1.6 versicolor #> 85 5.4 3.0 4.5 1.5 versicolor #> 86 6.0 3.4 4.5 1.6 versicolor #> 87 6.7 3.1 4.7 1.5 versicolor #> 88 6.3 2.3 4.4 1.3 versicolor #> 89 5.6 3.0 4.1 1.3 versicolor #> 90 5.5 2.5 4.0 1.3 versicolor #> 91 5.5 2.6 4.4 1.2 versicolor #> 92 6.1 3.0 4.6 1.4 versicolor #> 93 5.8 2.6 4.0 1.2 versicolor #> 94 5.0 2.3 3.3 1.0 versicolor #> 95 5.6 2.7 4.2 1.3 versicolor #> 96 5.7 3.0 4.2 1.2 versicolor #> 97 5.7 2.9 4.2 1.3 versicolor #> 98 6.2 2.9 4.3 1.3 versicolor #> 99 5.1 2.5 3.0 1.1 versicolor #> 100 5.7 2.8 4.1 1.3 versicolor #> 101 6.3 3.3 6.0 2.5 virginica #> 102 5.8 2.7 5.1 1.9 virginica #> 103 7.1 3.0 5.9 2.1 virginica #> 104 6.3 2.9 5.6 1.8 virginica #> 105 6.5 3.0 5.8 2.2 virginica #> 106 7.6 3.0 6.6 2.1 virginica #> 107 4.9 2.5 4.5 1.7 virginica #> 108 7.3 2.9 6.3 1.8 virginica #> 109 6.7 2.5 5.8 1.8 virginica #> 110 7.2 3.6 6.1 2.5 virginica #> 111 6.5 3.2 5.1 2.0 virginica #> 112 6.4 2.7 5.3 1.9 virginica #> 113 6.8 3.0 5.5 2.1 virginica #> 114 5.7 2.5 5.0 2.0 virginica #> 115 5.8 2.8 5.1 2.4 virginica #> 116 6.4 3.2 5.3 2.3 virginica #> 117 6.5 3.0 5.5 1.8 virginica #> 118 7.7 3.8 6.7 2.2 virginica #> 119 7.7 2.6 6.9 2.3 virginica #> 120 6.0 2.2 5.0 1.5 virginica #> 121 6.9 3.2 5.7 2.3 virginica #> 122 5.6 2.8 4.9 2.0 virginica #> 123 7.7 2.8 6.7 2.0 virginica #> 124 6.3 2.7 4.9 1.8 virginica #> 125 6.7 3.3 5.7 2.1 virginica #> 126 7.2 3.2 6.0 1.8 virginica #> 127 6.2 2.8 4.8 1.8 virginica #> 128 6.1 3.0 4.9 1.8 virginica #> 129 6.4 2.8 5.6 2.1 virginica #> 130 7.2 3.0 5.8 1.6 virginica #> 131 7.4 2.8 6.1 1.9 virginica #> 132 7.9 3.8 6.4 2.0 virginica #> 133 6.4 2.8 5.6 2.2 virginica #> 134 6.3 2.8 5.1 1.5 virginica #> 135 6.1 2.6 5.6 1.4 virginica #> 136 7.7 3.0 6.1 2.3 virginica #> 137 6.3 3.4 5.6 2.4 virginica #> 138 6.4 3.1 5.5 1.8 virginica #> 139 6.0 3.0 4.8 1.8 virginica #> 140 6.9 3.1 5.4 2.1 virginica #> 141 6.7 3.1 5.6 2.4 virginica #> 142 6.9 3.1 5.1 2.3 virginica #> 143 5.8 2.7 5.1 1.9 virginica #> 144 6.8 3.2 5.9 2.3 virginica #> 145 6.7 3.3 5.7 2.5 virginica #> 146 6.7 3.0 5.2 2.3 virginica #> 147 6.3 2.5 5.0 1.9 virginica #> 148 6.5 3.0 5.2 2.0 virginica #> 149 6.2 3.4 5.4 2.3 virginica #> 150 5.9 3.0 5.1 1.8 virginica
all.equal(iris_dec, iris2)
#> [1] "Attributes: < Names: 1 string mismatch >" #> [2] "Attributes: < Length mismatch: comparison on first 2 components >" #> [3] "Attributes: < Component “class”: Lengths (1, 2) differ (string compare on first 1) >" #> [4] "Attributes: < Component “class”: 1 string mismatch >" #> [5] "Attributes: < Component 2: Modes: character, numeric >" #> [6] "Attributes: < Component 2: Lengths: 1, 150 >" #> [7] "Attributes: < Component 2: target is character, current is numeric >"