Tag: r

为什么R的ifelse语句不能返回向量?

我发现R的ifelse语句时不时会很方便。 例如: ifelse(TRUE,1,2) # [1] 1 ifelse(FALSE,1,2) # [1] 2 但是,我有点困惑的下列行为。 ifelse(TRUE,c(1,2),c(3,4)) # [1] 1 ifelse(FALSE,c(1,2),c(3,4)) # [1] 3 这是一个deviseselect是否在我的薪酬级别之上?

如何将Rgraphics打印到PDF和多个PDF的多个页面?

我知道 pdf("myOut.pdf") 将在R中打印成PDF格式。如果我想要怎么做? 做一个循环,在PDF文件的新页面上打印后续graphics(追加到最后)? 制作一个循环,将后续graphics打印到新的PDF文件(每个文件一个graphics)?

R中的copy-on-modify语义是什么,哪个是规范的源代码?

每过一段时间,我都会遇到R具有copy-on-modify语义的概念,例如在Hadley的devtools wiki中 。 大多数R对象具有copy-on-modify语义,因此修改函数参数不会改变原始值 我可以追溯到R-Help邮件列表。 例如,Peter Dalgaard在2003年7月写道: R是一种function性语言,具有懒惰评估和弱dynamictypes(一个variables可以随意改变types:a <-1; a < – “a”是允许的)。 从语义上讲,尽pipe在实现中使用了一些优化技巧来避免最糟糕的低效率,但一切都是复制修改的。 同样,Peter Dalgaard在2004年1月写道: R有复制修改语义(原则上有时在实践中),所以一旦一个对象的一部分发生变化,你可能不得不在新的地方寻找包含它的东西,包括可能的对象本身。 更进一步, 2000年2月, Ross Ihaka说: 我们付出了相当多的努力来实现这一目标。 我会将语义描述为“在修改时复制(如果需要)”。 仅在对象被修改时才进行复制。 (如果有必要)部分意味着如果我们能certificate修改不能改变任何非局部variables,那么我们就直接进行修改而不复制。 这不在手册中 无论我多么努力地search,我都无法在R手册中find对“copy-on-modify”的引用, R语言定义和R内部 题 我的问题有两个部分: 这个正式logging在哪里? 复制修改如何工作? 例如,说“传引用”是否合适,因为承诺会传递给函数?

如何发送电子邮件附件从R在Windows中

我有一个预定的R脚本从Windows机器运行。 完成后,我希望这个脚本自动发送附加了一些日志文件的电子邮件。 使用shell()和其他一些脚本可能是可行的,但我想知道是否有更好的解决schemeR.谢谢。

连接string/字符的向量

如果我有一个字符types的向量,我怎样才能连接到string的值? 以下是我将如何使用paste() : sdata = c('a', 'b', 'c') paste(sdata[1], sdata[2], sdata[3], sep ='') 产生"abc" 。 但是,当然,只有在提前了解sdata的长度时才有效。

正确/最快的方法来重塑data.table

我有一个数据表在R: library(data.table) set.seed(1234) DT <- data.table(x=rep(c(1,2,3),each=4), y=c("A","B"), v=sample(1:100,12)) DT xyv [1,] 1 A 12 [2,] 1 B 62 [3,] 1 A 60 [4,] 1 B 61 [5,] 2 A 83 [6,] 2 B 97 [7,] 2 A 1 [8,] 2 B 22 [9,] 3 A 99 [10,] 3 B 47 [11,] 3 A 63 [12,] […]

计算R中每个matrix的平均值

我在R工作室工作。 我需要计算数据框的每列的平均值。 cluster1 // 5 by 4 data frame mean(cluster1) // 我有 : Warning message: In mean.default(cluster1) : argument is not numeric or logical: returning NA 但我可以使用 mean(cluster1[[1]]) 得到第一列的平均值。 如何获得所有列的手段? 任何帮助,将不胜感激。

获得警告:“'newdata'有1行,但是发现variables有32行”在R中的predict.lm

我在R中使用预测和lm函数时发现了特殊性。对于相同的数据,我得到了不同的dataframe和向量的结果。 数据框代码: data(mtcars) fitCar<-lm(mtcars$mpg~mtcars$wt) predict(fitCar, data.frame(x=mean(mtcars$wt)), interval="confidence") 输出: fit lwr upr 1 23.282611 21.988668 24.57655 2 21.919770 20.752751 23.08679 3 24.885952 23.383008 26.38890 4 20.102650 19.003004 21.20230 5 18.900144 17.771469 20.02882 6 18.793255 17.659216 19.92729 7 18.205363 17.034274 19.37645 8 20.236262 19.136179 21.33635 9 20.450041 19.347720 21.55236 10 18.900144 17.771469 20.02882 11 18.900144 17.771469 20.02882 […]

删除“。”后的部分string

这是一个简单的问题,但我不明白我做错了什么。 我工作在R与login号如variablesa >a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2") 要从biomart软件包中获取信息,我需要删除.1等。 我通常这样做这个代码: > b <- sub("..*","",a) >[1] "" "" "" "" "" "" 但是正如你所看到的,这不是这个variables的正确方法。 谁能帮我这个?

从string中加载R包

我想创build一个函数,其中包括加载我在函数中做的一个包。 一个简短的例子(不运行!): loadMe <- function(name){ genLib(xxx, libName = name) #make a new library with name "name" library(name) #load the new library… } 这不行! 一些可重现的代码说明了我的主要问题: library(ggplot) #this works fine load.this <- "ggplot" library(load.this) #I want this to load ggplot! 我知道问题在于library()和require()将一个不存在的对象名作为参数。 我已经尝试用parse() , deparse() , substitute() , expression() , quote()等等来包装我的string。这些都返回相同的问题: library(load.this) # Error in library(loadss) : there […]