小编Ale*_*lex的帖子

data中的表达式语法:在R中

我有一些麻烦的evaldata.table中的R与表达工作.这是一些代码:

dtb = data.table(a=1:100, b=100:1, id=1:10)
dtb[,`:=`(c=a+b, d=a/b),by=id] #this works fine
expr = expression({`:=`(c=a+b, d=a/b)}) #try to couch everything in an expression
dtb[,eval(expr),by=id] #this does not work
Error in `:=`(c = a + b, d = a/b) : 
   unused argument(s) (c = a + b, d = a/b)

expr = expression(`:=`(c=a+b, d=a/b)) #this works fine
dtb[,eval(expr),by=id] 
Run Code Online (Sandbox Code Playgroud)

为什么包括{}打破这个?

expression eval r data.table

4
推荐指数
2
解决办法
427
查看次数

关于持续时间与周期如何在每月添加的润滑剂中起作用的混淆

以下是我认为可能的错误:

require(lubridate)
d = as.Date("1994-03-31")
> d + months(1)
  [1] "1994-05-01"
Run Code Online (Sandbox Code Playgroud)

我的理解是,这应该返回到1994年4月底.请告知这是否确实是一个错误.

r date lubridate

4
推荐指数
1
解决办法
695
查看次数

将日期转换为R中的年月代表

我有一个Date,并有兴趣将其表示为一个整数yyyymm形式.目前,我这样做:

get_year_month <- function(d) { return(as.integer(format(d, "%Y%m")))}
mydate = seq.Date(from=as.Date("2012-01-01"), to=as.Date("5012-01-01"), by=1) 
system.time(ym <- get_year_month(mydate))
#    user  system elapsed 
#    5.972   0.974   6.951 
Run Code Online (Sandbox Code Playgroud)

这对于大型数据集来说非常慢.有更快的方法吗?请提供答案的时间安排,以便轻松比较.使用上面的例子.

r date posixct lubridate

4
推荐指数
1
解决办法
6922
查看次数

is.null对R中的null data.table不起作用[可能的错误]?

我相信这可能是一个错误。如果是这样,我将报告。寻找确认:

> is.null(data.table(NULL))
  [1] FALSE
Run Code Online (Sandbox Code Playgroud)

我在常见问题解答中看到以下内容:

2.5 NULL data.table是否与DT [0]相同?否,尽管打印方法另有说明。严格来说,不可能有is.null(data.table(NULL))返回FALSE。将来可能会再次访问该常见问题解答。

如果这是预期的行为:如何检查对象是否为null?特别rbindlist是一个NULL对象返回一个NULL data.table怎么检查?

> is.null(rbindlist(NULL))
  [1] FALSE
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
2
解决办法
3559
查看次数

在R中缩放data.table列的子集

我想scale在我的一部分列中data.table.我希望有很多这样的,scale所以我想避免通过名称来指定它们.没有缩放的列,我只想按原样返回.这是我希望可以工作,但它没有:

require(data.table)
x = data.table(id=1:10, a=sample(1:10,10), b=sample(1:10,10), c=sample(1:10,10))
> dput(x)
structure(list(id = 1:10, a = c(1L, 6L, 10L, 7L, 5L, 3L, 2L, 
4L, 9L, 8L), b = c(4L, 9L, 5L, 7L, 6L, 1L, 8L, 10L, 3L, 2L), 
    c = c(2L, 7L, 5L, 6L, 4L, 1L, 10L, 9L, 8L, 3L)), .Names = c("id", 
"a", "b", "c"), row.names = c(NA, -10L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x1a85d088>)

sx = x[,c(id, lapply(.SD, function(v) as.vector(scale(v)))), .SDcols …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
1
解决办法
3207
查看次数

在data.frame R中仅选择具有有限值的行

想象一下,我data.frame在R中有很多列.我想只选择所有列都有有限值的行.

set.seed(123)
d = data.frame(matrix(sample(c(1:10, Inf, -Inf), 100, replace=T), ncol=20))
Run Code Online (Sandbox Code Playgroud)

我不想按名称引用每一列,因为它们有很多.na.omit并且complete.cases不会在这里做的伎俩.

一种方法是运行:

d[apply(apply(d, 2, is.finite), 1, all),]
Run Code Online (Sandbox Code Playgroud)

这很难看.有没有更好的办法?

r apply dataframe

4
推荐指数
1
解决办法
1344
查看次数

过滤行时的R data.table行为

我在R中创建一个data.table并设置一个用作键的列.当我尝试从数据表中检索值时; 对于没有匹配的行,我得到NA值.我通常不希望在我的搜索中出现这种行为.以下示例

library(data.table) 
dt <- data.table('foo'=seq(10),bar=sample(letters,10))
setkey(dt,bar)
dt[sample(letters,5)]


> dt[sample(letters,5)]
   b foo
1: x   4
2: q   2
3: u   8
4: s  NA
5: b  NA
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
1
解决办法
958
查看次数

使用RMySQL,R和MySQL连接到数据库

我试图从R连接到我的数据库.当我从shell启动服务器(使用unix)时,我必须传递--ssl-ca = myfile.如何使用dbConnect函数传递此标志?谢谢.

mysql database database-connection r

3
推荐指数
1
解决办法
1233
查看次数

有条件地忽略行加载数据mysql

我正在将一个大型数据集(60演出)加载到数据库中.有些记录可以跳过,因为它们包含缺少的值.如何告诉MySQL跳过包含某些(在这种情况下丢失)值的行?例如,我的文件看起来像这样

Value1, Value2
1,2
3,4
,5
9,10
Run Code Online (Sandbox Code Playgroud)

第三行可以跳过而不加载.我知道我可以加载所有内容然后删除它但处理60 gig文件需要很长时间,所以我想节省计算能力.

谢谢

mysql sql if-statement load-data-infile

3
推荐指数
1
解决办法
4352
查看次数

在R中传递大对象的内存有效方法

我有一个函数需要访问其父环境中的变量(调用该函数的范围).变量在内存方面很大,所以我不希望将值传递给被调用的函数.除了在全局范围内声明变量之外,还有一种标准的方法吗?例如:

g <- function (a, b) { #do stuff}

f <- function(x) {
    y <- 3 #but in my program y is very large
    g(x, y)
}
Run Code Online (Sandbox Code Playgroud)

我想访问y in g().所以像这样:

g <- function (a) { a+y }

f <- function(x) {
    y <- 3 #but in my program y is very large
    g(x)
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

谢谢

scope r function global-variables environment-variables

3
推荐指数
1
解决办法
1726
查看次数