我的列表包含如下所示的值。
Mylist:
[[1]]
[1] 1 1 1 0 1 1
[[2]]
[1] 0 0 0 0 1 0
[[3]]
[1] 0 0 0 0 1 0
我需要将此二进制值转换为十进制。我正在使用BinToDec()
函数。但是这里的值是用空格分隔的。如何在该列表中获取诸如111011、000010等的值。我尝试使用gsub
,但是它删除了字符串中的空格。谢谢!
答案 0 :(得分:2)
尝试将gsub
与lapply
一起使用,以删除所有空白:
BinToDec <- function(x)
sum(2^(which(rev(unlist(strsplit(as.character(x), "")) == 1))-1))
lst <- list("1 1 1 0 1 1", "0 0 0 0 1 0", "0 0 0 0 1 0")
unlist(lapply(lst, function(x) BinToDec(gsub("\\s+", "", x))))
[1] 59 2 2
我从this SO answer获得了上面的BinToDec
函数,也许您也看到了。
编辑:
如果您实际上有一个整数矢量列表,请使用此选项:
lst <- list(c(1,1,1,0,1,1), c(0,0,0,0,1,0), c(0,0,0,0,1,0))
unlist(lapply(lst, function(x) BinToDec(paste(as.character(x), collapse=""))))
[1] 59 2 2
答案 1 :(得分:0)
谢谢。as.numeric(paste(as.character(Mylist[[i]]),collapse = ""))
解决了这个问题。
答案 2 :(得分:0)
包装(StringR)
下面的代码允许查找某些字符并删除或替换
代码 str_replace_all(x,“”,“”)
与您有关
str_replace_all(list,“”,“”)
说明
str_replace_all(数据集,“ 您要查找的字符”,“ 替换字符”)
如果仅针对特定行,请确保执行以下操作
str_replace_all(Dataset $ Row,“ 您要查找的字符”,“ 替换字符”)