相关疑难解决方法(0)

R中L的澄清

L在R的踪迹是:

c<-1:10
c
# [1]  1  2  3  4  5  6  7  8  9 10
c[-1]
# [1]  2  3  4  5  6  7  8  9 10
c[-2]
# [1]  1  3  4  5  6  7  8  9 10
c[-1L]
# [1]  2  3  4  5  6  7  8  9 10
c[-2L]
# [1]  1  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

我尝试使用?L没有成功.

到底是x[<n>L]什么?任何进一步使用它的例子?

integer r numeric

26
推荐指数
1
解决办法
8773
查看次数

R中的大型矩阵:尚不支持长向量

我在具有400GB RAM的64位Ubuntu环境中运行64位R 3.1,在处理大型矩阵时遇到了一个奇怪的限制.

我有一个名为A的数字矩阵,即4000行乘950,000列.当我尝试访问其中的任何元素时,我收到以下错误:

Error: long vectors not supported yet: subset.c:733
Run Code Online (Sandbox Code Playgroud)

虽然我的矩阵是通过via读取的scan,但您可以使用以下代码进行复制

test <- matrix(1,4000,900000) #no error
test[1,1] #error
Run Code Online (Sandbox Code Playgroud)

我的谷歌搜索显示这是R 3.0之前的常见错误消息,其中大小为2 ^ 31-1的向量是限制.但是,鉴于我的环境,情况并非如此.

我不应该为这种矩阵使用原生矩阵类型吗?

r vector matrix

17
推荐指数
1
解决办法
1万
查看次数

在 R 中使用整数值代替数值(例如 1L 与 1)作为常量的好处

在 R 源代码中,大多数(但不是全部)函数使用整数值作为常量:

colnames <- function(x, do.NULL = TRUE, prefix = "col")
{
    if(is.data.frame(x) && do.NULL)
    return(names(x))
    dn <- dimnames(x)
    if(!is.null(dn[[2L]]))
    dn[[2L]]
    else {
        nc <- NCOL(x)
    if(do.NULL) NULL
        else if(nc > 0L) paste0(prefix, seq_len(nc))
        else character()
    }
}
Run Code Online (Sandbox Code Playgroud)

R语言定义说:

在大多数情况下,整数和数值之间的差异并不重要,因为 R 在使用数字时会做正确的事情。然而,有时我们想显式地为常量创建一个整数值。

  • 在哪些情况下需要强制常量使用整数值而不是简单地使用数值?例如,例如 1 会失败,但例如 1L 不会失败的示例是受欢迎的。
  • 相反,在哪些情况下不需要使用整数值(例如交互式使用与编程、使用常量索引等)?

问题是关于良好实践和基本原理,而不是关于“L”符号本身整数类和数字类之间的差异比较数字

integer interactive r function numeric

16
推荐指数
1
解决办法
796
查看次数

R:Int与向量中的Num异常

我正在研究R编程的入门,并注意到一个轻微的异常:

  • x <- c(2,1,1,5) 生成一个类型的向量 num
  • y <- c(1:5) 生成一个类型的向量 int
  • z <- c(1.5,2.3) 生成一个类型的向量 num

为什么会这样?什么是基本数据类型R:是int或是它num?如果向量中的一个元素是a float,那么向量的类型会变成float或者是其他东西会发生什么?当向量中的所有元素都是float- 为什么它仍然num在那种情况下会发生什么?

floating-point int r

6
推荐指数
1
解决办法
321
查看次数

如何使用多核使 gganimate 更快

我的问题是如何利用 iMac 的多个核心来使 gganimate 运行得更快。还有另一个问题(更多链接在下面)询问同样的事情\xe2\x80\x94我的问题是关于这个问题的答案加速 gganimate Rendering

\n

在该答案中,Roman 和 mhovd 指出了此GitHub 评论中的一个示例(另请参阅此 GitHub 帖子):

\n
library(gganimate)\nlibrary(future)\n\nanim <- ggplot(mtcars, aes(mpg, disp)) +\n  transition_states(gear, transition_length = 2, state_length = 1) +\n  enter_fade() +\n  exit_fade()\n\nfuture::plan("sequential")  ## default\nt0 <- system.time(animate(anim))\nprint(t0)\n\nfuture::plan("multiprocess", workers = 4L)\nt1 <- system.time(animate(anim))\nprint(t1)\n
Run Code Online (Sandbox Code Playgroud)\n

我已经尝试过这个,但得到的时间彼此非常接近:

\n
     user    system   elapsed \n1.0041475 0.9775679 0.9995509 \n
Run Code Online (Sandbox Code Playgroud)\n

除了这段代码之外,我还需要做些什么吗?根据上述 StackOverflow 答案或 GitHub 页面,我无法判断这段代码是否应该按原样工作,或者是否在幕后进行了其他修改。

\n

如果有帮助的话,我正在使用配备 8 核 Intel 处理器的 iMac。我也在 R 中运行它,因为 RStudio 说了一些关于它不支持多核的内容。

\n

另请注意,我的问题也广泛涉及这三个过去的问题:

\n …

parallel-processing macos r ggplot2 gganimate

5
推荐指数
1
解决办法
841
查看次数

获取第1个第1次和第2次出现之间的向量索引

假设我们有一个向量:

v <- c(0,0,0,1,0,0,0,1,1,1,0,0)
Run Code Online (Sandbox Code Playgroud)

预期产量:

v_index <- c(5,6,7)
Run Code Online (Sandbox Code Playgroud)

v总是开始和结束0.在两个1s 之间只有一个零簇的可能性.

看似简单,无法理解我的头脑......

r

4
推荐指数
1
解决办法
88
查看次数