我想创建一个函数,包括加载我在函数中创建的包.一个简短的例子(不运行!):
loadMe <- function(name){
genLib(xxx, libName = name) #make a new library with name "name"
library(name) #load the new library...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用!一些可重现的代码说明了我的主要问题:
library(ggplot) #this works fine
load.this <- "ggplot"
library(load.this) #I want this to load ggplot!
Run Code Online (Sandbox Code Playgroud)
我知道问题在于,library()并将require()一个尚不存在的对象名称作为参数.我已经试过包装我的字符串,parse(),deparse(),substitute(),expression(),quote(),等等等等,这些都返回了同样的问题:
library(load.this)
# Error in library(loadss) : there is no package called 'loadss'
library(deparse(load.this))
# Error in library(deparse(loadss)) : 'package' must be of length 1
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
假设我们在目录C:\ R\Data中有文件file1.csv,file2.csv,...和file100.csv,我们希望将它们全部读入单独的数据框(例如file1,file2,...和file100).
这样做的原因是,尽管具有相似的名称,但它们具有不同的文件结构,因此将它们放在列表中并不是很有用.
我可以使用lapply但返回包含100个数据帧的单个列表.相反,我想在全球环境中使用这些数据框.
如何直接将多个文件读入全局环境?或者,或者,如何将数据框列表的内容解压缩到其中?
打印R对象结构的命令是什么,因此可以通过运行打印输出重新创建对象?
输出通常包含structure函数,您可以将输出复制并粘贴到代码中,以便轻松创建可重现示例的对象.
我整个上午都在打破这个我应该知道的命令.
我做了一些研究,我一直在寻找解决方案.我有一个时间序列数据,非常基本的数据框,让我们称之为x:
Date Used
11/1/2011 587
11/2/2011 578
11/3/2011 600
11/4/2011 599
11/5/2011 678
11/6/2011 555
11/7/2011 650
11/8/2011 700
11/9/2011 600
11/10/2011 550
11/11/2011 600
11/12/2011 610
11/13/2011 590
11/14/2011 595
11/15/2011 601
11/16/2011 700
11/17/2011 650
11/18/2011 620
11/19/2011 645
11/20/2011 650
11/21/2011 639
11/22/2011 620
11/23/2011 600
11/24/2011 550
11/25/2011 600
11/26/2011 610
11/27/2011 590
11/28/2011 595
11/29/2011 601
11/30/2011 700
12/1/2011 650
12/2/2011 620
12/3/2011 645
12/4/2011 650
12/5/2011 639
12/6/2011 620
12/7/2011 600
12/8/2011 …Run Code Online (Sandbox Code Playgroud) 我试图将数字格式转换为R中的整数.这对于我使用Java代码运行某些模拟(将此特定数据读取为int)的项目的一部分是必不可少的.
我想这两个round(x$var, 0)和trunc(x$var).他们都成功运行,但是当我str(x),x$var依然是num.x是一个数据帧.
我正在使用zoo对象,买我的问题也适用于xts对象.它看起来像是一个带有索引的单列向量.在我的例子中,索引是日期的向量,而一列向量是我的数据.一切都很好,除了我想访问日期(从索引).
例如,我有以下结果:
ObjZoo <- structure(c(10, 20), .Dim = c(2L, 1L), index = c(14788, 14789),
class = "zoo", .Dimnames = list(NULL, "Data"))
unclass(ObjZoo)
# Data
# [1,] 10
# [2,] 20
# attr(,"index")
# [1] 14788 14789
Run Code Online (Sandbox Code Playgroud)
我想进入14789变量或向量,但我不知道如何访问它.
给定sortkey,是否有一个data.table快捷方式来复制SAS和SPSS中的功能first和last功能?
下面的行人方法标记了组的第一个记录.
鉴于data.table(我正逐渐熟悉)的优雅,我假设有一个使用自联接的快捷方式mult,但我仍然试图弄明白.
这是一个例子:
require(data.table)
set.seed(123)
n <- 17
DT <- data.table(x=sample(letters[1:3],n,replace=T),
y=sample(LETTERS[1:3],n,replace=T))
sortkey <- c("x","y")
setkeyv(DT,sortkey)
key <- paste(DT$x,DT$y,sep="-")
nw <- c( T , key[2:n]!=key[1:(n-1)] )
DT$first <- 1*nw
DT
Run Code Online (Sandbox Code Playgroud) 在一个函数中,我经常需要使用如下代码:
which(x==1)[1]
which(x>1)[1]
x[x>10][1]
Run Code Online (Sandbox Code Playgroud)
哪里x是数字向量.summaryRprof()表明我花了80%以上的时间在关系运营商身上.我想知道是否有一个函数只进行比较,直到TRUE达到第一个值来加速我的代码.For循环比上面提供的选项慢.
我在ggplot2包中有一个时间序列图,我已经执行了移动平均线,我想将移动平均值的结果添加到时间序列图中.
数据集样本(p31):
ambtemp dt -1.14
2007-09-29 00:01:57
-1.12 2007-09-29 00:03:57 -1.33
2007-09-29 00:05:57
-1.44 2007-09-29 00:07:57
-1.54 2007-09-29 00:09:57
-1.29 2007-09-29 00:11:57
时间序列演示的应用代码:
Require(ggplot2)
library(scales)
p29$dt=strptime(p31$dt, "%Y-%m-%d %H:%M:%S")
ggplot(p29, aes(dt, ambtemp)) + geom_line() +
scale_x_datetime(breaks = date_breaks("2 hour"),labels=date_format("%H:%M")) + xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
opts(title = ("Node 29"))
Run Code Online (Sandbox Code Playgroud)
时间序列演示的样本

移动平均线图样本
预期结果的样本
挑战在于时间序列数据ov =从数据集中获得,其中包括时间戳和温度,但移动平均数据仅包括平均列而不是时间戳,并且拟合这两者可能导致不一致.

我有我的主要字符串资源文件的android,它是相当充分的(看不到尽头).所以,我希望做一些房子清理并将一些字符串移动到他们自己的资源文件中.这可能吗?
我知道,你也可以拥有像string-en或string-de,但是它可能也许有一个资源文件如string-errors?