在使用sciviews-K一段时间之后,我即将给予R Eclipse组合另一个机会.我在Mac OS X Snow Leopard上更新了Helios.到目前为止,以前用Eclipse制造麻烦的所有东西都可以工作,但不知怎的,我错过了代码的自动完成.或者至少使用R函数时标准的参数建议.这甚至可以在标准R GUI中实现.
如何在StatET Eclipse中使用其中一些增强功能?
提前告诉我不要使用Emacs/ESS!
我有两个相似的功能.因此,我想知道这是否适合在R中继承遗产.
firstfunc <- function(table,pattern="^Variable") {
dframe <- get(table)
cn <- colnames(get(table))
qs <- subset(cn, cn %in% grep(pattern, cn, value=TRUE))
.....
}
secondfunc <- function(table,pattern="^stat"){
dframe <- get(table)
cn <- colnames(get(table))
qs <- subset(cn, cn %in% grep(pattern, cn, value=TRUE))
....
}
Run Code Online (Sandbox Code Playgroud)
将有两个以上的功能和两个模式.我的表包含很多变量,可以按名称轻松分组,这就是我使用这些模式识别的原因.它到目前为止运作良好,而且这些几行的c&p并不是那么费力.但是,将这些行写入一个函数/方法并让其他函数/方法继承是否合理?
我在R中阅读OO的大部分帮助到目前为止都使用了为数据分配属性然后使用泛型函数的示例.不幸的是,我还不明白这是否也可以帮助我.
对于任何建议的Thx,指向一个好头的指针首先开始这个!
我确信你们在回归对象上执行plot命令时都知道"命中返回显示下一个绘图"语句.我想知道如何在R中自己进行这种互动.我在邮件列表上发现了几个帖子,但没有什么真正全面的.其中大部分涉及menu()和不同的操作系统GUI.我只想创建类似的东西:
Please enter sample size n:
> 1000
#execution of
rnorm(1000)
Run Code Online (Sandbox Code Playgroud)
可能我刚刚错过了文档的某些部分,并且根本无法找到正确的单词谷歌...
到目前为止,我已经错过了一个直方图函数,在y轴上有一个分数.像这样:
require(ggplot2)
data(diamonds)
idealD <- diamonds[diamonds[,"cut"]=="Ideal",]
fracHist <- function(x){
frac <- (hist(x,plot=F)$counts) / (sum(hist(x,plot=F)$counts))
barplot(frac)
}
### call
fracHist(idealD$carat)
Run Code Online (Sandbox Code Playgroud)
它不漂亮,但基本上应该解释我想要的东西:酒吧高度应该加起来一个.此外,断裂应标记x轴.我很想创建具有相同ggplot2 but can't figure out how to get around plotting the frequencies of压裂instead of plotting压裂itself.
all I get with `ggplot` is density...
m <- ggplot(idealD, aes(x=carat))
m + geom_histogram(aes(y = ..density..)) + geom_density()
Run Code Online (Sandbox Code Playgroud) 显然,我仍然不完全理解lapply是如何工作的.当然,它将一个函数应用于列表元素并返回一个列表.然而,当它与自定义功能一起使用时,我不太确定如何有效地使用它.我想在使用dcast的自定义函数中使用它.
首先让我们得到一个示例数据集:
df1 <- data.frame(idx=c(rep("a",3),rep("b",3),rep("c",3)),
cat=rep(1:3,3),var1=rnorm(9,0,1)
)
df2 <- data.frame(idx=c(rep("a",4),rep("b",4),rep("c",4)),
cat2=rep(1:4,3),var1=rnorm(12,0,1)
)
mylist <- list(cat=df1,cat2=df2)
library(reshape2)
### result that I want to get just for one data.frame
dcast(df1,idx~cat,value_var="var1")
Run Code Online (Sandbox Code Playgroud)
但是,我无法用拉普利去做,我试过:
lapply(mylist,function(x) substitute(dcast(x,idx~x,value_var="var1")))
## returns
$cat
dcast(X[[2L]], idx ~ X[[2L]], value_var = "var1")
Run Code Online (Sandbox Code Playgroud)
显然,在评估表达式时,X [[2L]]不起作用.我还试过了
lapply(names(mylist), function(x) dcast(mylist[[x]],idx~x,value_var="var1" ))
Run Code Online (Sandbox Code Playgroud)
这是在一些类似的问题,但在这里引起了一个错误.我应该在这里使用吗?
编辑:我很惊讶约书亚的答案正是我想要的.我曾经在那条路上,但在我尝试的时候就把它解雇了:
test <- function(x){
myformula <- as.formula(paste("idx~",x,sep=""))
myformula
}
test(df2)
## returns
## > idx ~ c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
## > …Run Code Online (Sandbox Code Playgroud) 自从早期成为RStudio用户以来,我刚刚在我的本地ubuntu VM上安装了RStudio Server.浏览器版本行动迅速,提供用户管理等等 - 这让我印象深刻的原因很多.我也喜欢将它与基于LDAP的用户管理集成的事实似乎并不是一件轻而易举的事.
此外,我一直在关注opencpu.org和Jeroen Ooms的其他项目的开发.像lme4这样的应用程序特别适合我.
我正在为自己的研究所开发一个特定机构的R软件包,并希望通过添加应用程序服务器和添加基于Web的gui来增加其在组织内的使用.
上面描述的两个项目提供的方式比我需要的多,所以不需要重新发明轮子.但我不确定我应该在这里使用哪种轮子.
您将使用哪种体系结构来构建基于Web的GUI,并使用LDAP用户管理(使用外部LDAP服务器)进行自定义程序包?
最近我感到惊讶的事实是,is.logical并且is.factor无法开箱即用apply- 至少他们没有提供正确的结果.
这是我可重复的小例子:
# generate a dataset that contains a couple of modes
someDf <- data.frame(fac1=gl(2,3,12),
int=1:12,
char=letters[1:12],
logi=rep(c(T,F),6),
fac2=gl(3,2,12))
# hooray, this did work, got factors, int,
# characters and logical
str(someDf)
# I expected this to work, but it didn't
# everything is just FALSE
apply(someDf,2,is.logical)
Run Code Online (Sandbox Code Playgroud)
我并没有放弃,而是找到了一种方法来偷偷摸摸.
unlist(lapply(names(someDf),function(x) is.logical(someDf[,x])))
Run Code Online (Sandbox Code Playgroud)
虽然这提供了正确的结果,但我想知道为什么它必须那么复杂,是否有一个更简单的解决方案.有任何想法吗?
提示:我已经看到了
apply(someDf,2,class)
Run Code Online (Sandbox Code Playgroud)
提供所有characters.这也是出乎意料的.也许是eval我无法找到的伎俩.
我有一个简单的列表和一个相同长度的简单向量.我想将ith向量的ith元素添加到列表的元素中.有没有办法比这个循环更好?
test <- list(element1=list(a=1,b=2,a1=8),
element2=list(a=9,d=17))
vec <- c(12,25)
for (i in 1:length(test)){
test[[i]] <- c(test[[i]],vec[i])
}
Run Code Online (Sandbox Code Playgroud) 如果条件向量包含NA,有没有办法让条件下标?假设我有一个像这样的data.frame
dframe <- data.frame(a=c(1,32,4,5,8),b=c(1,2,3,4,5),d=c(NA,5,5,10,9))
dframe[dframe$d > 9,"a"] <- NA
Run Code Online (Sandbox Code Playgroud)
如果它不是dframe $ d中的NA那么这将是直截了当的.我已经看到这里的%in%语法绕过NAs,但不知道如何管理条件.我可以看出这是一个普遍的问题,因为我不太确定我是否想在条件或其他东西中获得缺失值的NA.但我也有兴趣了解人们如何处理这种情况.
在我的特定情况下,当NA在这种情况下被视为FALSE时,这将简单地有所帮助.
我正在尝试构建一个包含自己的S4类定义的包.R检查有效但发出以下警告:undefined slot classes in definition mySecond.
我设置为类,而第二类中的一个插槽是类myFirstClass.例如:
setClass("myFirst",representation(field_one = "character",
field_two = "list")
)
setClass("mySecond",representation(a = "character",
b = "myFirst")
)
Run Code Online (Sandbox Code Playgroud)
注意:虽然S4可能更容易处理,但我想在这里坚持使用S4,因为我在数据库中映射信息,而在这种情况下更喜欢S4更严格的定义.编译确实有效,但我尝试在这里实现CRAN的标准,并希望摆脱警告.顺便说一下:
getClassDef两个班级都给出了合理的结果.