我将使用此脚本将许多十进制数转换为二进制数:(例如,这里:1073956868)
#include<iostream>
#include<memory>
using namespace std;
class Test
{
public:
Test(int a = 0 ) : m_a(a)
{
}
~Test( )
{
cout<<"Calling destructor"<<endl;
}
int m_a;
};
//***************************************************************
void Fun(std::unique_ptr<Test> p1 )
{
cout<<p1->m_a<<endl;
}
//***************************************************************
int main( )
{
std::unique_ptr<Test> p( new Test(5) );
Fun(std::move(p));
cout<<p->m_a<<endl;
return 0;
}
参考:Converting decimal to binary in R?
它有效,但我需要R从表中读取x <- 1073956868
y <- intToBits(x)
z <- paste(sapply(strsplit(paste(rev(y)),""),`[[`,2),collapse="")
print (z)
"01000000000000110100100000000100"
write.table(z, file = 'test.csv', row.names=FALSE,col.names=FALSE)
值(此处:Book1.csv和C列)。
所以,我添加了这个脚本:
x
在此之后我应该写什么,以使R能够完成这些工作:
1-从Book1.csv文件(C列)中读取setwd("F:/test")
data1 <- read.table(file="F:/test/Book1.csv", header=T, sep=",")
data1
attach(data1)
值。
2-使用上面的脚本将所有x
值转换为二进制值。
3-最后,保存test.csv中的每个x
值。
=============================================== =========================
修改:
我很感激你的时间@Daniel。
这是我在R-Studio中运行的脚本:
z
这是控制台:
中的输出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")
我似乎正确地使用了您的脚本,但我不知道为什么结果中会显示此错误:
> data1
row QC
1 34952 1073741825
2 34959 1073956868
3 35012 1075585053
4 35019 1075800097
5 35063 1077151797
6 63351 1946172419
7 63411 1948015647
8 65126 2000701251
9 65186 2002544479
10 65237 2004111223
11 65535 2013265923
> x
[1] 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(as.raw(y)))), ""),
+ `[[`, 2),
+ collapse = ""))
There were 11 warnings (use warnings() to see them)
> newvar
[1] "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000"
[5] "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000"
[9] "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000"
> write.csv(newvar, file = "test.csv")
这些是警告列表:
There were 11 warnings (use warnings() to see them)
我更改了R的版本,但仍然存在错误。 您使用的是哪个版本的R?
答案 0 :(得分:0)
您必须在下面的示例中定义start-endrow和endrow以及列索引,否则,如果您想要列的所有值,只需指定列索引:
# specify row and column index here
x <- data1[startrow:endrow, column]
以下是您的数据的可重现示例,其中假设x
具有数据框列中的值:
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")
将所有转换后的二进制值连接起来并保存在newvar
中。然后使用write.csv
将原始值和转换后的二进制数保存到磁盘。
注意:如果整数过大,as.raw
似乎无效。但是,您可以简单地省略它并将值直接转换为intToBits
的位。