gpt4 book ai didi

r - 从分成 300 个子字符串的长字符串创建新列?

转载 作者:行者123 更新时间:2023-12-04 01:51:54 25 4
gpt4 key购买 nike

我有一列包含 1200 个字符串。在每一个中,每四个字符组是一个数字的十六进制。即,每行 300 个十六进制数字塞入 1200 个字符的字符串中。我需要将每个数字转换为十进制,并放入其自己的名为 1-300 的列(300 个新列)中。到目前为止,这是我发现的:

  Data.frame:
BigString
[1] 0043003E803C0041004A...(etc...)

这是我到目前为止所做的:

decimal.fours <- function(x) {
strtoi(substring(BigString[x], seq(1,1197,4), seq(4,1197,4)), 16L)
}
decimal.fours(1)
[1] 283 291 239 177 ...

但现在我卡住了。我如何将这些单独的数字(以及剩余的 296 个数字)输出到新列中?我总共有 50 行/字符串。一次完成它们会很棒,即 300 个新列,包含 50 个字符串的拆分子字符串。

最佳答案

您可以使用 read.fwf 读取每列固定宽度的文件:

# an example vector of big strings
BigString = c("0043003E803C0041004A", "0043003E803C0041004A", "0043003E803C0041004A")

n = 5 # n is the number of columns for your result(300 for your real case)
as.data.frame(
lapply(read.fwf(file = textConnection(BigString),
widths = rep(4, n),
colClasses = "character"),
strtoi, base = 16))

# V1 V2 V3 V4 V5
#1 67 62 32828 65 74
#2 67 62 32828 65 74
#3 67 62 32828 65 74

如果你想保留 decimal.hours 函数,你可以按如下方式修改它并调用 lapply 将你的 bigStrings 转换为整数列表,它可以是使用 do.call(rbind, ...) 模式进一步转换为 data.frame:

decimal.fours <- function(x) {
strtoi(substring(x, seq(1,1197,4), seq(4,1197,4)), 16L)
}

do.call(rbind, lapply(BigString, decimal.fours))

关于r - 从分成 300 个子字符串的长字符串创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com