Sah*_*hib 1 base64 r github-api
举个例子df <- head(iris)。我如何将其编码为 Base64 字符串。我需要它作为 GitHub API 内容参数。
目前我一直在尝试使用该base64encode()函数,但收到“normalizePath 中的错误”。
您可以使用serialize获取对象的原始字节并将其转换为基数 64:
df <- head(iris)
b64_string <- base64enc::base64encode(serialize(df, NULL))
b64_string
#> [1] "WAoAAAADAAMGAgADBQAAAAAGQ1AxMjUyAAADEwAAAAUAAAAOAAAABkAUZmZmZmZ
#> mQBOZmZmZmZpAEszMzMzMzUASZmZmZmZmQBQAAAAAAABAFZmZmZmZmgAAAA4AAAA
#> GQAwAAAAAAABACAAAAAAAAEAJmZmZmZmaQAjMzMzMzM1ADMzMzMzMzUAPMzMzMzM
#> zAAAADgAAAAY/9mZmZmZmZj/2ZmZmZmZmP/TMzMzMzM0/+AAAAAAAAD/2ZmZmZmZ
#> mP/szMzMzMzMAAAAOAAAABj/JmZmZmZmaP8mZmZmZmZo/yZmZmZmZmj/JmZmZmZm
#> aP8mZmZmZmZo/2ZmZmZmZmgAAAw0AAAAGAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA
#> BAAAEAgAAAAEABAAJAAAABmxldmVscwAAABAAAAADAAQACQAAAAZzZXRvc2EABAA
#> JAAAACnZlcnNpY29sb3IABAAJAAAACXZpcmdpbmljYQAABAIAAAABAAQACQAAAAV
#> jbGFzcwAAABAAAAABAAQACQAAAAZmYWN0b3IAAAD+AAAEAgAAAAEABAAJAAAABW5
#> hbWVzAAAAEAAAAAUABAAJAAAADFNlcGFsLkxlbmd0aAAEAAkAAAALU2VwYWwuV2l
#> kdGgABAAJAAAADFBldGFsLkxlbmd0aAAEAAkAAAALUGV0YWwuV2lkdGgABAAJAAA
#> AB1NwZWNpZXMAAAQCAAAAAQAEAAkAAAAJcm93Lm5hbWVzAAAADQAAAAKAAAAAAAA
#> ABgAABAIAAAL/AAAAEAAAAAEABAAJAAAACmRhdGEuZnJhbWUAAAD+"
Run Code Online (Sandbox Code Playgroud)
您可以在传输后撤消此操作:
unserialize(base64enc::base64decode(b64_string))
#> 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
Run Code Online (Sandbox Code Playgroud)
但是,如果这是针对 github,则最好传输重现数据帧的代码而不是二进制信息。dput这可以通过以下方式实现:
ascii_string <- paste(capture.output(dput(df)), collapse = "\n")
ascii_string
#> [1] "structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), \n
#> Sepal.Width = c(3.5, 3, 3.2, 3.1, 3.6, 3.9), Petal.Length = c(1.4, \n
#> 1.4, 1.3, 1.5, 1.4, 1.7), Petal.Width = c(0.2, 0.2, 0.2, \n 0.2, 0.2,
#> 0.4), Species = structure(c(1L, 1L, 1L, 1L, 1L, \n 1L), .Label =
#> c(\"setosa\", \"versicolor\", \"virginica\"), class = \"factor\")),
#> row.names = c(NA, \n6L), class = \"data.frame\")"
Run Code Online (Sandbox Code Playgroud)
这可以写入 .R 文件作为再现数据帧的一种方式。它还可以用于以编程方式重建数据帧eval(parse(text = ascii_string))