删除R中数值之间的空格

时间:2018-10-12 09:27:14

标签: r

我的列表包含如下所示的值。

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,但是它删除了字符串中的空格。谢谢!

3 个答案:

答案 0 :(得分:2)

尝试将gsublapply一起使用,以删除所有空白:

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

Demo

答案 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,“ 您要查找的字符”,“ 替换字符”)