如果有人能用一个简单的例子说明这一点会有所帮助吗?
此外,在哪里使用parent.frame()
而不是parent.env()
反之亦然.
我目前正在编写一个R包,并通过R中的包使用已编译的C++代码Rcpp
(Rcpp使得像我这样的非程序员,恕我直言的R和C++代码的交互更容易).
我想使用gdb在我的C++程序中调试一些错误.我用google搜索了一下,主要是在emacs,R-FAQ,这里的一些邮件,以及R的Writing R Extension手册中调试R的一些资源.
但是,我这是第一次这样做,我不能走得太远.任何人都可以给我一些关于如何在emacs中调试R包(或带有C++/C代码的扩展)的指针.具体来说,我想利用ESS与R和gdb一起使用Emacs(如R-FAQ所述).
请注意,我对如何仅使用C或C++程序使用gdb感到满意.但我无法将这些知识转化为使用带有R和扩展名的gdb.
我在 say 中有一个嵌套列表lst
(所有元素都是 class int
)。我不知道lst
提前的长度;但是我知道每个元素lst
都是一个长度列表说k
length(lst[[i]]) # this equals k and is known in advance,
# this is true for i = 1 ... length(lst)
Run Code Online (Sandbox Code Playgroud)
我如何取union
第一个元素,第二个元素,...,所有元素的第 k 个元素lst
具体来说,如果 的长度lst
是n
,我想要(不是 R 代码):
# I know that union can only be taken for 2 elements,
# following is for illustration purposes
listUnion1 <- union(lst[[1, 1]], lst[[2, 1]], ..., lst[[n, 1]])
listUnion2 <- union(lst[[1, 2]], lst[[2, 2]], …
Run Code Online (Sandbox Code Playgroud) 假设我有一个向量,我不知道,apriori,它的独特元素(这里:1和2).
vec <-
c(1, 1, 1, 2, 2, 2, 2)
Run Code Online (Sandbox Code Playgroud)
我有兴趣知道是否有更好的方式(或优雅的方式)获得独特元素的数量,vec
即相同的结果table(vec)
.无论是data.frame还是命名向量都无关紧要.
R> table(vec)
vec
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
原因:我很想知道是否有更好的方法.另外,我注意到实现中有一个for
循环base
(除了.C调用).我不知道这是一个大问题,但是当我做一些类似的事情时
R> table(rep(1:1000,100000))
Run Code Online (Sandbox Code Playgroud)
R需要很长时间.我确信这是因为它的数量很大.但有没有办法让它更快?
编辑除了Chase's
答案之外,这也做得很好.
R> rle(sort(sampData))
Run Code Online (Sandbox Code Playgroud)