在下面编码的Rdataframe中,我想用b来代替B出现的所有时间。 junk <- data.frame(x <- rep(LETTERS[1:4], 3), y <- letters[1:12]) colnames(junk) <- c("nm", "val") 这提供了: nm val 1 A a 2 B b 3 C c 4 D d 5 A e 6 B f 7 C g 8 D h 9 A i 10 B j 11 C k 12 D l 我最初的尝试是使用for和if语句,如下所示: for(i […]
我正在尝试使用ggplot2绘制多个图,使用grid.arrange()来排列它们。 由于我设法find某人描述了我所遇到的确切问题,所以我从链接中引用了问题描述: 当我在ggsave()之后使用grid.arrange() ,即 grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg") 我不保存网格图,但最后一个单独的ggplot。 是否有任何方法实际上保存的情节,通过grid.arrange()使用ggsave()或类似的东西显示? 除了使用旧的方式 jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off() 相同的链接给出了下面的解决scheme: require(grid) require(gridExtra) p <- arrangeGrob(qplot(1,1), textGrob("test")) grid.draw(p) # interactive device ggsave("saving.pdf", p) # need to specify what to save explicitly 但是,我不知道如何使用ggsave()来保存grid.arrange()调用的输出在下面的代码,这是从链接 : library(ggplot2) library(gridExtra) dsamp <- diamonds[sample(nrow(diamonds), 1000), ] p1 <- qplot(carat, price, data=dsamp, colour=clarity) p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path") […]
我目前正在研究一种algorithm来实现C中滚动中值滤波器(类似于滚动平均滤波器)。从我的文献search中,似乎有两种合理有效的方法来实现它。 首先是对初始值窗口进行sorting,然后执行二进制search以插入新值,并在每次迭代中删除现有值。 第二个(来自Hardle和Steiger,1995,JRSS-C,algorithm296)构build了一个双头堆结构,一头是maxheap,另一头是minheap,中间是中间的。 这产生一个线性时间algorithm,而不是O(n log n)。 这是我的问题:执行前者是可行的,但是我需要在数百万个时间序列上运行这个,所以效率非常重要。 后者certificate很难实施。 我在R的stats包的代码的Trunmed.c文件中发现了代码,但这是相当难以理解的。 有没有人知道线性时间滚动中值algorithm的一个精心编写的C实现? 编辑:链接到Trunmed.c代码http://google.com/codesearch/p?hl=zh-CN&sa=N&cd=1&ct=rc#mYw3h_Lb_e0/R-2.2.0/src/library/stats/src/Trunmed.c
如果我有一些R列表mylist ,你可以像这样附加一个项目obj : mylist[[length(mylist)+1]] <- obj 但肯定有一些更紧凑的方式。 当我刚刚在R的时候,我尝试lappend()像lappend()这样写: lappend <- function(lst, obj) { lst[[length(lst)+1]] <- obj return(lst) } 但是当然这并不起作用,因为R的名字叫做语义( lst在调用时被有效地复制,所以在lappend()的范围之外, lst变化是不可见的。我知道你可以在R函数来达到你的函数的范围之外,并且改变了调用环境,但是这似乎是一个很大的锤子来写一个简单的附加函数。 任何人都可以提出一个更美丽的方式做到这一点? 奖励点,如果它的向量和列表。
我想交织相同模式和相等长度的两个向量。 说: a <- rpois(lambda=3,n=5e5) b <- rpois(lambda=4,n=5e5) 我想交织或交织这两个向量,创build一个等价的向量c(a[1],b[1],a[2],b[2],…,a[length(a)],b[length(b)]) 我的第一个尝试是这样的: sapply(X=rep.int(c(3,4),times=5e5),FUN=rpois,n=1) 但是它要求rpois被称为比需要更多的次数。 到目前为止,我的最佳尝试是将其转化为一个matrix并重新转换成一个vector: d <- c(rbind(rpois(lambda=3,n=5e5),rpois(lambda=4,n=5e5))) d <- c(rbind(a,b)) 有没有更好的方法去做呢? 还是有一个在基地Rfunction完成相同的事情?
我最近从版本0.8.9升级到ggplot2 0.9.0,现在我得到的是,我的情节的传说只显示在情节中使用的因素水平(它省略了未使用的)。 在它之前将所有的因素级别包括在图例中。 我正在运行Windows 7和R 2.15.0(今天之前的2.14.2)。 有没有其他人也find这个? 有没有一种方法可以让我的情节图例中显示未使用的因子水平? library(ggplot2) df <- data.frame(fruit = rep(c("apple", "orange"), times=11), year = 1990:2011, qty = rnorm(22, 100, 20)) # This plot only gives "apple" in the legend now. # Before, I used to get both "apple" and "orange". qplot(year, qty, data = subset(df, fruit=="apple"), colour = fruit) qplot()用于在图例中给我“苹果”和“橙色”(即使只有“苹果”的点)。 现在我只在传说中得到“苹果”。 […]
我注意到当我使用像使用列表元素的逐字列名作为参数的subset函数时,我在检查一个包时得到的注释是“没有可见的全局variables绑定”。 例如对于一个dataframe: foo < – data.frame(a = c(TRUE,FALSE,TRUE),b = 1:3) 我可以做一些愚蠢的事情,比如: subset(foo,a) transform(foo,a=b) 哪些按预期工作。 R CMD中的R代码检查并不理解这些引用了元素,并且抱怨没有任何可见的全局variables绑定。 虽然这工作正常,我真的不喜欢有在我的包中的笔记,并希望它通过检查没有错误,警告和笔记。 我也不是真的想重写我的代码太多。 有没有办法写这些代码,以便清楚的参数不指向全局variables?
我有两个data.tables ,X(3行data.tables列)和Y(100行两列)。 set.seed(1) X <- data.table( a=letters, b=letters, c=letters, g=sample(c(1:5,7),length(letters),replace=TRUE), key="g" ) Y <- data.table( z=runif(6), g=1:6, key="g" ) 我想在X上做一个左外连接,我可以通过Y[X]来完成,这要归功于: 为什么data.tables的X [Y]连接不允许完整的外连接或左连接? 但是我想添加新的列到X 而不复制X (因为它是巨大的)。 很显然,像X <- Y[X]这样的东西是有效的,但是除非data.table远远超过我所称赞的(而且我相当相当多的歪曲!),我相信这会复制整个X 。 X[ , z:= Y[X,z]$z ]可以工作,但是非常好,不能很好地扩展到多个列。 如何以合理的方式将合并结果存储到保留的data.table中(无论是在副本方面还是在程序员时间方面)?
我想创build这个数据集的虚拟variables: DF<-structure(list(A = c(1, 2, 3, 4, 5), B = c("1,3,2", "2,1,3,6", "3,2,5,1,7", "3,7,4,2,6,5", "4,10,7,3,5,6")), .Names = c("A", "B"), row.names = c(NA, 5L), class = "data.frame") > DF AB 1 1 1,3,2 2 2 2,1,3,6 3 3 3,2,5,1,7 4 4 3,7,4,2,6,5 5 5 4,10,7,3,5,6 所需的输出应该如下所示: A 1 2 3 4 5 6 7 8 9 […]
我在Ubuntu 12.10上使用R版本2.15.3(2013-03-01)。 该系统是德语和R是一样的。search错误消息时,这是不方便的。 在xterm这样执行R $ LANG="C" R部分解决了这个问题。 然后R显示一切英文。 但是当以这种方式加载RStudio时,R解释器仍然是德语。 所以我正在寻找一种方法来改变R本身的R语言环境。 我发现这个: 如何更改R中的语言设置 ,但是Sys.setenv(LANG = "en")用于我: 2+x # Fehler: Objekt 'x' nicht gefunden Sys.setenv(LANG = "en") 2+x # Fehler: Objekt 'x' nicht gefunden 我也试过Sys.setenv(LANG = "en_US.UTF-8")没有成功。 Sys.getlocale()输出 Sys.getlocale() # [1] "LC_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=de_DE.UTF-8; # LC_COLLATE=de_DE.UTF-8;LC_MONETARY=de_DE.UTF-8;LC_MESSAGES=de_DE.UTF-8; # LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=de_DE.UTF-8; # LC_IDENTIFICATION=C" (为了方便添加了线刹)