从表格中读取数字,并将结果记录到R?中的新表格中?

从表格中读取数字,并将结果记录到R?中的新表格中?,r,csv,binary,decimal,R,Csv,Binary,Decimal,我将使用这个脚本将许多十进制数转换为二进制数:(例如,这里:1073956868) 在这一点之后,我应该写些什么来让R完成这些工作: 1-从Book1.csv文件(C列)中读取x值 2-使用上述脚本将所有x值转换为二进制 3-最后,将每个z值保存在test.csv中 ======================================================================== 编辑: 谢谢你抽出时间@Daniel 这是我在R-Studio中运行的脚本: setw

我将使用这个脚本将许多十进制数转换为二进制数:(例如,这里:1073956868)

在这一点之后,我应该写些什么来让R完成这些工作:

1-从Book1.csv文件(C列)中读取
x

2-使用上述脚本将所有
x
值转换为二进制

3-最后,将每个
z
值保存在test.csv中

========================================================================

编辑:

谢谢你抽出时间@Daniel

这是我在R-Studio中运行的脚本:

setwd("F:/test")
data1 <- read.table(file="F:/test/Book1.csv", header=T, sep=",")
data1
attach(data1)
x <- data1[, 2]
x
newvar <- c()
for (y in x) newvar <- c(newvar, 
                         paste(sapply(strsplit(paste(rev(intToBits(as.raw(y)))), ""),
                                      `[[`, 2),
                               collapse = ""))
newvar
write.csv(newvar, file = "test.csv")
以下是警告列表:

> warnings()
Warning messages:
1: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
2: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
3: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
4: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
5: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
6: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
7: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
8: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
9: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
10: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
11: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
我更改了R的版本,但仍然存在错误。
您使用的是哪个版本的R?

在下面的示例中,您必须定义开始行和结束行以及列索引,否则,如果您需要列的所有值,只需指定列索引即可:

# specify row and column index here
x <- data1[startrow:endrow, column]
所有转换的二进制值都被连接并保存在
newvar
中。原始值和转换后的二进制数随后用
write.csv
保存到磁盘


注意:如果整数太大,
as.raw
似乎不起作用。但是,您可以简单地忽略它,并使用
intToBits

将值直接转换为位。在下面的示例中,您必须定义开始行和结束行以及列索引,否则,如果您需要列的所有值,只需指定列索引即可:

# specify row and column index here
x <- data1[startrow:endrow, column]
所有转换的二进制值都被连接并保存在
newvar
中。原始值和转换后的二进制数随后用
write.csv
保存到磁盘


注意:如果整数太大,
as.raw
似乎不起作用。但是,您可以简单地忽略它,并使用
intToBits

将值直接转换为位,谢谢@Daniel。但它将所有转换的值连接成一个长数字。我想在一个唯一的excel单元格中单独转换x值,如下图所示:[link])。换句话说,我希望R从列中提取一个x值,然后将其转换为二进制,最后将结果放入excel单元格。并对其他x值执行多次。再次感谢,是吗?我手头没有R,但我的尝试在csv文件中产生了“分隔”值。我会再检查一遍。你可能没有正确复制我的代码,对我来说很好。我添加了一个可复制的示例。非常感谢@Daniel的帮助。我已经用我正在运行的脚本更新了我的问题。你知道结果中显示的错误吗?谢谢@Daniel。但它将所有转换的值连接成一个长数字。我想在一个唯一的excel单元格中单独转换x值,如下图所示:[link])。换句话说,我希望R从列中提取一个x值,然后将其转换为二进制,最后将结果放入excel单元格。并对其他x值执行多次。再次感谢,是吗?我手头没有R,但我的尝试在csv文件中产生了“分隔”值。我会再检查一遍。你可能没有正确复制我的代码,对我来说很好。我添加了一个可复制的示例。非常感谢@Daniel的帮助。我已经用我正在运行的脚本更新了我的问题。你知道结果中显示的错误吗?我相应地改变了答案。似乎整数对于
as.raw
来说太大了,而且在您的情况下似乎不需要这个命令。太好了@Daniel,它终于起作用了。您的脚本在R控制台中生成正确的值,没有任何错误。但唯一的问题是excel文件中的最终结果与R控制台中的结果不同。请看一下这张照片:()。我认为我们需要在每个整数值周围加上“”,以便在excel文件中消除此错误。你认为呢?在文本编辑器中打开csv文件:值已经被引号包围。Excel只是做了它不应该做的事情,即将数字字符串转换为数字。您可以尝试在Excel中更改列/单元格样式并将其更改为“文本”,或者使用LibreOffice打开csv文件。我想说,这不再是一个R问题,我相应地改变了我的答案。似乎整数对于
as.raw
来说太大了,而且在您的情况下似乎不需要这个命令。太好了@Daniel,它终于起作用了。您的脚本在R控制台中生成正确的值,没有任何错误。但唯一的问题是excel文件中的最终结果与R控制台中的结果不同。请看一下这张照片:()。我认为我们需要在每个整数值周围加上“”,以便在excel文件中消除此错误。你认为呢?在文本编辑器中打开csv文件:值已经被引号包围。Excel只是做了它不应该做的事情,即将数字字符串转换为数字。您可以尝试在Excel中更改列/单元格样式并将其更改为“文本”,或者使用LibreOffice打开csv文件。我想说,这不再是一个R问题。
There were 11 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
2: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
3: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
4: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
5: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
6: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
7: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
8: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
9: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
10: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
11: In intToBits(as.raw(y)) : out-of-range values treated as 0 in coercion to raw
# specify row and column index here
x <- data1[startrow:endrow, column]
x <- c(1073741825, 1073956868, 1075585053, 1075800097, 1077151797, 1946172419, 
       1948015647, 2000701251, 2002544479, 2004111223, 2013265923)
newvar <- c()
for (y in x) newvar <- c(newvar, 
                         paste(sapply(strsplit(paste(rev(intToBits(y))), ""),
                                      `[[`, 2),
                               collapse = ""))
newvar
write.csv(data.frame(int = x, bin = newvar), file = "test.csv")