有没有人有一个连接字符串示例使用RODBC并连接到MS SQL Server 2005或2008.
谢谢.
在这个问题中,data.table
包创建者解释了为什么行不能通过引用在中间插入(或删除)data.table
.他还指出,这种操作可以在表格末尾进行.你能展示一个代码来完成这个动作吗?它将是"参考"版本
a<- data.table(id=letters[1:2], var=1:2)
> a
id var
1: a 1
2: b 2
> rbind(a, data.table(id="c", var=3))
id var
1: a 1
2: b 2
3: c 3
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
既然不可能采用适当的解决方案,那么从速度和内存使用情况来看,下列哪一项更好(如果内部不同,不确定)?
rbind(a, data.table(id="c", var=3))
rbindlist(list(a, data.table(id="c", var=3)))
Run Code Online (Sandbox Code Playgroud)
最终还有其他(更好)的方法吗?
该R
函数expand.grid
返回所提供参数的元素之间的所有可能组合.例如
> expand.grid(c("aa", "ab", "cc"), c("aa", "ab", "cc"))
Var1 Var2
1 aa aa
2 ab aa
3 cc aa
4 aa ab
5 ab ab
6 cc ab
7 aa cc
8 ab cc
9 cc cc
Run Code Online (Sandbox Code Playgroud)
你知道一种直接获得的有效方法(所以没有任何行比较之后expand.grid
)只提供所提供的矢量之间的"唯一"组合吗?输出将是
Var1 Var2
1 aa aa
2 ab aa
3 cc aa
5 ab ab
6 cc ab
9 cc cc
Run Code Online (Sandbox Code Playgroud)
编辑每个元素与自身的组合最终可以从答案中丢弃.我实际上并不需要它在我的程序中,即使(数学上)aa aa
将是一个元素Var1
和另一个元素之间的一个(常规)唯一组合var2
.
解决方案需要从两个向量生成元素对(即每个输入向量中的一个 - 以便它可以应用于多于2个输入)
In data.table
可能有类型的列,list
我第一次尝试从此功能中受益.我需要为我的表的每一行存储dt
从rApache Web服务获取的几条注释.每条评论都有一个用户名,日期时间和正文项.
而不是使用带有一些奇怪的,不寻常的字符的长字符串来将每个消息与其他消息分开(例如|
),并且;
要分隔评论中的每个项目,我想使用这样的列表:
library(data.table)
dt <- data.table(id=1:2,
comment=list(list(
list(username="michele", date=Sys.time(), message="hello"),
list(username="michele", date=Sys.time(), message="world")),
list(
list(username="michele", date=Sys.time(), message="hello"),
list(username="michele", date=Sys.time(), message="world"))))
> dt
id comment
1: 1 <list>
2: 2 <list>
Run Code Online (Sandbox Code Playgroud)
存储为一个特定行添加的所有注释.(也因为JSON
当我需要将其发送回用户界面时,将更容易转换为以后)
但是,当我尝试模拟在生产过程中我将如何填充表格时(向特定行添加单个注释),R
要么崩溃,要么不分配我想要的然后崩溃:
library(data.table)
> library(data.table)
> dt <- data.table(id=1:2, comment=vector(mode="list", length=2))
> dt$comment
[[1]]
NULL
[[2]]
NULL
> dt[1L, comment := 1] # this works
> dt$comment
[[1]]
[1] 1
[[2]]
NULL
> set(dt, 1L, …
Run Code Online (Sandbox Code Playgroud) 我的连接可能有一些问题(某种块,dunno),我无法直接安装表单 gitHub
> install_github("assertthat")
Installing github repo(s) assertthat/master from hadley
Installing assertthat.zip from https://github.com/hadley/assertthat/archive/master.zip
Run Code Online (Sandbox Code Playgroud)
我尝试了很多其他包,结果相同.但是,我可以master.zip
从浏览器下载.你能告诉我是否可以直接安装.zip
?谢谢.
仍然了解这个伟大的包...有谁能解释我这个错误的原因?谢谢!
library(data.table)
DT <- data.table(id = LETTERS,
var1 = rnorm(26),
var2 = rnorm(26))
> DT[2, list(var1, var2)]
var1 var2
1: -0.8628479332 -0.2367492928
> DT[2, c(var1, var2)]
[1] -0.8628479332 -0.2367492928
>
> DT[2, list(var1, var2)] <- DT[8, list(var1, var2)]
Error in `[<-.data.table`(`*tmp*`, 2, list(var1, var2), value = list(var1 = -0.394006912428776, :
object 'var1' not found
> DT[2, c(var1, var2)] <- DT[8, c(var1, var2)]
Error in `[<-.data.table`(`*tmp*`, 2, c(var1, var2), value = c(-0.394006912428776, :
object 'var1' not found
Run Code Online (Sandbox Code Playgroud) 在我的工作中,我使用了几个表(客户详细信息,交易记录等).其中一些是非常大的(数百万行),我最近切换到data.table
包(感谢马修).但是,它们中的一些非常小(几百行和4/5列),并被称为几次.因此,我开始考虑检索数据的[.data.table
开销,而不是像已经清楚描述的那样设置()ting值,其中,无论表的大小如何设置在2微秒左右(取决于cpu).?set
但是,它似乎不等于set
从data.table
知道确切的行和列获取值.一种loopable [.data.table
.
library(data.table)
library(microbenchmark)
m = matrix(1,nrow=100000,ncol=100)
DF = as.data.frame(m)
DT = as.data.table(m) # same data used in ?set
> microbenchmark(DF[3450,1] , DT[3450, V1], times=1000) # much more overhead in DT
Unit: microseconds
expr min lq median uq max neval
DF[3450, 1] 32.745 36.166 40.5645 43.497 193.533 1000
DT[3450, V1] 788.791 803.453 813.2270 832.287 5826.982 1000
> microbenchmark(DF$V1[3450], DT[3450, 1, with=F], times=1000) # using atomic vector …
Run Code Online (Sandbox Code Playgroud) 假设我不需要"正确的"变量映射,但仍希望使用图例键来帮助理解图表.我的实际数据类似于以下df
df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))
library(ggplot2)
ggplot(df) +
geom_line(aes(id, line, colour = "line")) +
geom_point(aes(id, points, colour = "points"))
Run Code Online (Sandbox Code Playgroud)
基本上,我希望传说键相对于points
......只是一个点,没有中间的线.我接近这个:
library(reshape2)
df <- melt(df, id.vars="id")
ggplot() +
geom_point(aes(id, value, shape = variable), df[df$variable=="points",]) +
geom_line(aes(id, value, colour = variable), df[df$variable=="line",])
Run Code Online (Sandbox Code Playgroud)
但它定义了两个独立的传说.修复第二个代码(并且必须重塑我的数据)也没关系,但我更喜欢一种方法(如果有的话)手动更改任何图例键(并继续使用第一个approch).谢谢!
编辑:
谢谢@alexwhan你更新了我对变量映射的记忆.但是,到目前为止我最简单的方法仍然是以下(非常糟糕的黑客!):
df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))
ggplot(df) +
geom_line(aes(id, line, colour = "line")) +
geom_point(aes(id, points, shape = "points")) +
theme(legend.title=element_blank())
Run Code Online (Sandbox Code Playgroud)
这只是隐藏了两个不同 …
我需要指定一个"第二个"id来将原始内容中的某些值分组id
.这是我的样本数据:
dt<-structure(list(id = c("aaaa", "aaaa", "aaas", "aaas", "bbbb", "bbbb"),
period = c("start", "end", "start", "end", "start", "end"),
date = structure(c(15401L, 15401L, 15581L, 15762L, 15430L, 15747L), class = c("IDate", "Date"))),
class = c("data.table", "data.frame"),
.Names = c("id", "period", "date"),
sorted = "id")
> dt
id period date
1: aaaa start 2012-03-02
2: aaaa end 2012-03-05
3: aaas start 2012-08-21
4: aaas end 2013-02-25
5: bbbb start 2012-03-31
6: bbbb end 2013-02-11
Run Code Online (Sandbox Code Playgroud)
列id
需要id2
根据此列表进行分组(使用相同的值):
> groups
[[1]] …
Run Code Online (Sandbox Code Playgroud) 我无法从github安装包:
> install_github('cranvas', 'ggobi', args="--no-multiarch")
Installing github repo(s) cranvas/master from ggobi
Installing cranvas.zip from https://github.com/ggobi/cranvas/archive/master.zip
Error in function (type, msg, asError = TRUE) : couldn't connect to host
Run Code Online (Sandbox Code Playgroud)
这是我的会议:
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)
Run Code Online (Sandbox Code Playgroud)
NB:install.packages
像往常一样工作,只是与github问题.有没有人遇到过这个?谢谢