我有一个data.table包含一些组.我操作每个组,一些组返回数字,其他组返回NA.出于某种原因data.table,将所有东西重新组合起来很麻 这是一个错误还是我误解了?这是一个例子:
dtb <- data.table(a=1:10)
f <- function(x) {if (x==9) {return(NA)} else { return(x)}}
dtb[,f(a),by=a]
Error in `[.data.table`(dtb, , f(a), by = a) :
columns of j don't evaluate to consistent types for each group: result for group 9 has column 1 type 'logical' but expecting type 'integer'
Run Code Online (Sandbox Code Playgroud)
我的理解是NA与R中的数字兼容,因为显然我们可以拥有data.table具有NA价值的数字.我意识到我可以返回NULL,这将工作正常,但问题是NA.
我有一个data.frame对象列表,我想将它们相互追加,即merge(..., all=T).但是,merge似乎删除了我需要保持原样的行名称.有任何想法吗?例:
x = data.frame(a=1:2, b=2:3, c=3:4, d=4:5, row.names=c("row_1", "another_row1"))
y = data.frame(a=c(10,20), b=c(20,30), c=c(30,40), row.names=c("row_2", "another_row2"))
> merge(x, y, all=T, sort=F)
a b c d
1 1 2 3 4
2 2 3 4 5
3 10 20 30 NA
4 20 30 40 NA
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么as.Date在字符向量上变慢?
我data.frame从数据库中读取了一个大的(大约60密耳的观察结果)RMySQL.日期是作为字符引入的(似乎没有办法改变这个)所以我用它as.Date来转换日期.然而,这需要很长时间才能进行如此多的观察.有什么办法可以让它更快吗?
我试图理解data.table文档中的逻辑并且有点不清楚.我知道我可以尝试这个,看看会发生什么,但我想确保没有病态的情况,因此想知道逻辑是如何实际编码的.当两个data.table对象具有不同数目的键列的,例如a具有2至b有3个,并在运行c <- a[b],将a与b被前两个键列简单地合并或将在自动第三列合并到第三键列中b?一个例子:
require(data.table)
a <- data.table(id=1:10, t=1:20, v=1:40, key=c("id", "t"))
b <- data.table(id=1:10, v2=1:20, key="id")
c <- a[b]
Run Code Online (Sandbox Code Playgroud)
这应该选择a与id键列匹配的行b.例如,对于id==1in b,有2行b和4行a,应该生成8行c.这确实是发生的事情:
> head(c,10)
id t v v2
1: 1 1 1 1
2: 1 1 21 1
3: 1 11 11 1
4: 1 11 31 1
5: 1 …Run Code Online (Sandbox Code Playgroud) 可能重复:
更改path.expand位置(Win 7)
我想更改path.expand("~/")Windows系统上引用的目录.目前,这默认为"C:/ Users/home/Documents /".怎么改变这个?请注意,这与设置的工作目录不同setwd()
我想检查当前环境是否是R中的全局环境.但是,直接比较似乎不适用于环境.做这个的最好方式是什么?
#doesn't work
sys.frame() == .GlobalEnv
Run Code Online (Sandbox Code Playgroud) 我coplot在R中用来绘制一些条件图:
coplot(var1 ~ var2 | var3, data=dtb, number=5, overlap=.1, panel=function(x,y, col, pch) {idx = order(x); lines(x[idx], predict(loess(y ~ x))[idx], pch = pch, col = col)})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何判断哪个图对应于条件变量的哪个"桶" var3?
> dput(dtb)
structure(list(var1 = 1:50, var2 = c(50L, 49L, 48L, 47L, 46L,
45L, 44L, 43L, 42L, 41L, 40L, 39L, 38L, 37L, 36L, 35L, 34L, 33L,
32L, 31L, 30L, 29L, 28L, 27L, 26L, 25L, 24L, 23L, 22L, 21L, 20L,
19L, 18L, 17L, 16L, 15L, 14L, 13L, 12L, 11L, 10L, 9L, 8L, …Run Code Online (Sandbox Code Playgroud) 我想在R中使用merge多个,进行全外连接.为此,我希望做到以下几点:data.framerow.names
x = as.data.frame(t(data.frame(a=10, b=13, c=14)))
y = as.data.frame(t(data.frame(a=1, b=2)))
z = as.data.frame(t(data.frame(a=3, b=4, c=3, d=11)))
res = Reduce(function(a,b) merge(a,b,by="row.names",all=T), list(x,y,z))
Warning message:
In merge.data.frame(a, b, by = "row.names", all = T) :
column name ‘Row.names’ is duplicated in the result
> res
Row.names Row.names V1.x V1.y V1
1 1 a 10 1 NA
2 2 b 13 2 NA
3 3 c 14 NA NA
4 a <NA> NA NA 3
5 b <NA> NA …Run Code Online (Sandbox Code Playgroud) 这是我遇到的问题的一个例子.我误用了还是这个错误?
require(data.table)
x <- data.table(a = 1:4)
# this does not work
x[ , {b = a + 3; `:=`(c = b)}]
# Error in `:=`(c = b) : unused argument(s) (c = b)
# this works fine
x[ ,`:=`(c = a + 3)]
Run Code Online (Sandbox Code Playgroud) 如何与下拉框进行交互RSelenium?特别是,我可以选择使用下拉框findElement但是如何选择它的选项?