我在一个大型EC2 Ubuntu实例上运行R 2.9,加载了RAM,但是没有终端.当我加载具有显示依赖性的库,如sqldf包时,我收到以下错误:
library(sqldf)
...
Loading required package: tcltk
Loading Tcl/Tk interface ... Error in fun(...) : couldn't connect to display "localhost:11.0"
Error : .onLoad failed in 'loadNamespace' for 'tcltk'
Error: package 'tcltk' could not be loaded
Run Code Online (Sandbox Code Playgroud)
这似乎是一个普遍的问题,我想知道其他人是如何解决它的.安装X11服务器不是理想的解决方案.
叫我懒,但我只是讨厌像往常一样打字paste("a","b",sep='').
我知道"(t)他是R.不管怎样,只有如何." (library(fortunes);(fortune(109)).所以,我的后续问题是:是否有可能轻易改变这种行为?
我一直在为R目前没有的一些常规工具开发一些R软件包:博客,报告交付,日志记录和日程安排.这让我想知道:人们希望 R中存在哪些最重要的东西,目前还没有?
我希望我们可以用它来查明一些差距,并可能协同工作.
我试图通过从特定列中具有相同值的每组行中删除除一行之外的所有行来折叠数据框.换句话说,每组的第一行.
例如,我想转换它
> d = data.frame(x=c(1,1,2,4),y=c(10,11,12,13),z=c(20,19,18,17))
> d
x y z
1 1 10 20
2 1 11 19
3 2 12 18
4 4 13 17
Run Code Online (Sandbox Code Playgroud)
进入:
x y z
1 1 11 19
2 2 12 18
3 4 13 17
Run Code Online (Sandbox Code Playgroud)
我目前正在使用聚合来执行此操作,但是使用更多数据时性能是不可接受的:
> d.ordered = d[order(-d$y),]
> aggregate(d.ordered,by=list(key=d.ordered$x),FUN=function(x){x[1]})
Run Code Online (Sandbox Code Playgroud)
我尝试使用与此处相同的函数参数进行split/unsplit,但是unsplit抱怨重复的行号.
有可能吗?是否有一个R idiom将rle的长度向量转换为开始每次运行的行的索引,然后我可以用它来从数据帧中取出这些行?
我正在使用R中的"by"函数来切断数据框并将函数应用于不同的部分,如下所示:
pairwise.compare <- function(x) {
Nright <- ...
Nwrong <- ...
Ntied <- ...
return(c(Nright=Nright, Nwrong=Nwrong, Ntied=Ntied))
}
Z.by <- by(rankings, INDICES=list(rankings$Rater, rankings$Class), FUN=pairwise.compare)
Run Code Online (Sandbox Code Playgroud)
结果(Z.by)看起来像这样:
: 4
: 357
Nright Nwrong Ntied
3 0 0
------------------------------------------------------------
: 8
: 357
NULL
------------------------------------------------------------
: 10
: 470
Nright Nwrong Ntied
3 4 1
------------------------------------------------------------
: 11
: 470
Nright Nwrong Ntied
12 4 1
Run Code Online (Sandbox Code Playgroud)
我想要的是将此结果转换为数据框(不存在NULL条目),所以它看起来像这样:
Rater Class Nright Nwrong Ntied
1 4 357 3 0 0
2 10 470 3 4 …Run Code Online (Sandbox Code Playgroud) 我经常想做以下几点:
mat <- matrix(0,nrow=10,ncol=1)
lapply(1:10, function(i) { mat[i,] <- rnorm(1,mean=i)})
Run Code Online (Sandbox Code Playgroud)
但是,我希望mat里面会有10个随机数,但它有0个.(我并不担心rnorm部分.显然有一种正确的方法可以做到这一点.我担心会影响mat lapply的匿名函数)我可以不从lapply里面影响矩阵垫吗?为什么不?是否有R的范围规则阻止了这个?
我在R中编写了一个非常基本的包.事实上,我按照本教程创建了一个基本包.
我的包在linux中运行得很好.例如:
> install.packages("linmod", repos=NULL)
Warning in install.packages("linmod", repos = NULL) :
argument 'lib' is missing: using '/home/jpgoel/R/i486-pc-linux-gnu-library/2.9'
* Installing *source* package ‘linmod’ ...
** R
** data
** preparing package for lazy loading
** help
*** installing help indices
>>> Building/Updating help pages for package 'linmod'
Formats: text html latex example
** building package indices ...
* DONE (linmod)
> library(linmod)
> data(mod1)
> mod1
Call:
linmod.default(x = x, y = y)
Coefficients:
Const Bwt
-0.3566624 4.0340627
现在,我拿了我的"linmod"文件夹,将其复制到Windows XP,并尝试了以下内容:
> install.packages("C:\\Documents\ and\ Settings\\foo\\Desktop\\linmod",repos=NULL) … 有没有办法在用户加载时显示消息library(myCustomLibrary)?加载后,我想显示一条消息,告诉用户如何运行所有测试功能.
我有一个列表(tmpList),如下所示:
$op
[1] "empty"
$termset
$termset$field
[1] "entry"
$termset[[2]]
$termset[[2]]$explode
[1] "Y"
Run Code Online (Sandbox Code Playgroud)
这是一个列表,里面有一个列表.如果我将此列表添加到矢量
theOneVector = c(theOneVector, tmpList)
Run Code Online (Sandbox Code Playgroud)
现在结果向量的长度为2,因为列表的第一个条目("op")与tmpList分开.是否可以将完整的tmpList附加到此向量中?
我已经试过了
theOneVector = c(theOneVector, list(tmpList))
Run Code Online (Sandbox Code Playgroud)
它给出了一个长度为1的向量,但是使用列表周围的这个额外列表来访问列表的元素非常麻烦.(我认为,在一个句子中列出的太多了.)
任何帮助将不胜感激,
马丁