我想说这是一个绝对的编程初学者,所以请原谅这个问题是多么基本.
我试图更好地理解R中的"原子"类,也许这适用于编程中的类.我理解字符,逻辑和复杂数据类之间的区别,但我很难找到数字类和整数类之间的根本区别.
假设我有一个简单x <- c(4, 5, 6, 6)的整数向量,这对于整数类是有意义的.但是,当我这样做class(x),我得到[1] "numeric".然后,如果我将此向量转换为整数类x <- as.integer(x).除了类不同之外,它返回相同的精确数字列表.
我的问题是为什么会出现这种情况,以及为什么一组整数的默认类是一个数字类,以及将整数设置为数字而不是整数的优点和缺点是什么.
什么是整数溢出错误?为什么我关心这样的错误?有哪些避免或预防方法?
最近有一些新闻关于发现三个总计为42的立方体。即,安德鲁·萨瑟兰德和安德鲁·布克发现(-80538738812075974)^ 3 + 80435758145817515 ^ 3 + 12602123297335631 ^ 3 = 42(https://math.mit。 edu /〜drew /)
我对此进行了一些修改,但在R中没有得到42。
我确实在其他地方得到了它(WolframAlpha),但是R给了我这个:
> (-80538738812075974)^3 + 80435758145817515^3 + 12602123297335631^3
[1] 1.992544e+35
Run Code Online (Sandbox Code Playgroud)
知道我在做什么错吗?R中是否存在大量限制?还是我(很可能)只是在做一些愚蠢的事情?
我有两个数据框,包含一系列案例.一个从时间1和一个从时间2.我正在寻找一种方法来快速识别在时间1和时间2之间发生变化的情况,我有点卡住.
这是一个例子.所以,我从时间1开始有一个数据框,
df.t1 <- data.frame(id = c(1,1,1,2,2,3,3,5,5,6), ABC = LETTERS[1:10], Num = 101:110)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样,
df.t1
id ABC Num
1 1 A 101
2 1 B 102
3 1 C 103
4 2 D 104
5 2 E 105
6 3 F 106
7 3 G 107
8 5 H 108
9 5 I 109
10 6 J 110
Run Code Online (Sandbox Code Playgroud)
时间两卷
df.t2 <- df.t1
Run Code Online (Sandbox Code Playgroud)
并发生一些变化,
df.t2[3,3] <- 104
df.t2[2,2] <- "H"
df.t2[8,3] <- 999
df.t2[10,3] <- NA
df.t2[11,] <- c(3, "J", 107) …Run Code Online (Sandbox Code Playgroud) 我正在尝试用矩阵替换NA - mat- 用零.我正在使用mat[is.na(mat)] <- 0.当我有8945个变量或更小变量的94531观测矩阵时效果很好但我在112039个22752个变量的观测矩阵上尝试它,R表示错误:
if(!nreplace)返回错误(x):缺少值需要TRUE/FALSE
另外:警告消息:
总和(i,na.rm = TRUE):整数溢出 - 使用sum(as.numeric(.))
我不知道我做错了什么,我不明白错误.
这是我的数据结构的一个例子.
small data.matrix :(由真实数据源制作)
> str(mat)
Classes 'data.table' and 'data.frame': 94531 obs. of 18946 variables:
$ 6316506: num 1 0 NA NA NA NA NA NA NA NA ...
$ 6794602: num 0 1 NA NA NA NA NA 0 0 0 ...
$ 1008667: num NA NA 0 1 0 NA NA 0 0 0 ...
$ 6312454: num NA NA 1 …Run Code Online (Sandbox Code Playgroud)