是否可以在data.table中创建新列并同时更新现有列?以下不起作用.谢谢.
library(data.table)
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y"))
dt[, c("x", "y") := list(x[1], y[1]), by=z] # works
dt[, c("x", "newx") := list(x[1], y[1]), by=z]
Run Code Online (Sandbox Code Playgroud)
抓到Segfault:
address 0x20000010, cause 'memory not mapped'
Run Code Online (Sandbox Code Playgroud)
追溯:
1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z)
2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z]
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用cron安排我的R脚本,但它无法正常工作.看来R在cron中找不到包.有人可以帮帮我吗?谢谢.
以下是我的bash脚本
# source my profile
. /home/winie/.profile
# script.R will load packages
R CMD BATCH /home/script.R
Run Code Online (Sandbox Code Playgroud)
有没有人知道以适当的形式将以下数据导入R?我尝试了strsplit函数: test <- strsplit(test,"[[:space:]]+")其中test是文件的名称,包括以下凌乱的数据.不知何故,我最终只得到一个字符变量.我想以适当的形式提供八个不同的变量.请你帮助我好吗?
Black Eagles 01/12 - 12/11 1500 W 7.0 420 48 Away +3
Blue State 02/18 - 04/21 1293 L 8.0 490 48 Home +1
Hawks 01/13 - 02/17 1028 L 4.0 46 460 Away
New Apple 09/23 - 11/23 563 L 3.0 470 47 Home +2
Black White 07/05 - 09/26 713 L 5.2 500 45 Home +4
PBO 10/24 - 10/30 1495 L 1.9 47 410 Away
Run Code Online (Sandbox Code Playgroud) 我想创建一个条形图,其中条形图绘制在水平线的顶部.
以下代码完成此操作:
y <- c(1,2,3,5)
barplot(y)
abline(h=mean(y))
barplot(y, add=T)
Run Code Online (Sandbox Code Playgroud)
但是,我担心add=T参数in barplot(),如果反复使用,会引入打印伪像.我很好奇是否有上述代码的替代品(尽管上面的代码可能是最快的方法).
我正在使用大型数据集x.我想删除x一组列中的一列或多列中缺少的行,该列x由字符向量指定varcols.
到目前为止,我已经尝试了以下内容:
require(data.table)
x <- CJ(var1=c(1,0,NA),var2=c(1,0,NA))
x[, textcol := letters[1:nrow(x)]]
varcols <- c("var1","var2")
x[, missing := apply(sapply(.SD,is.na),1,any),.SDcols=varcols]
x <- x[!missing]
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?谢谢.
我有一些数据:
test <- data.frame(A=c("aaabbb",
"aaaabb",
"aaaabb",
"aaaaab",
"bbbaaa")
)
Run Code Online (Sandbox Code Playgroud)
等等.所有元素都是相同的长度,并且在我得到之前已经排序.
我需要建立一个新的行列,"第一","第二","第三",之后的任何内容都可以留空,并且需要考虑关系.所以在上面的例子中,我想获得以下输出:
A B
aaabbb First
aaaabb Second
aaaabb Second
aaaaab Third
bbbaaa
bbbbaa
Run Code Online (Sandbox Code Playgroud)
我查看了rank()和其他一些使用它的帖子,但我无法让它去做我想要的.
当我阅读R手册时,我遇到了一些代码行如下(从R手册复制'colSums'):
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
dimnames(x)[[1]] <- letters[1:8]
x[] <- as.integer(x)
Run Code Online (Sandbox Code Playgroud)
有人能告诉我最后一行的目的是什么吗?谢谢!
这令我很沮丧.即使lubridate我在循环它们时也无法保持日期以保持其类型.例如:
require(lubridate)
yearrange = ymd(20110101) + years(seq(4))
yearrange
#[1] "2012-01-01 UTC" "2013-01-01 UTC" "2014-01-01 UTC" "2015-01-01 UTC"
class(yearrange)
#[1] "POSIXct" "POSIXt"
Run Code Online (Sandbox Code Playgroud)
但是,如果我试图循环多年(在我的数据集中为每年创建一个单独的图):我丢失了年份的格式,并且必须重新投射数据
for (yr in yearrange) { show(yr) }
#[1] 1325376000
#[1] 1356998400
#[1] 1388534400
#[1] 1420070400
Run Code Online (Sandbox Code Playgroud)
如果我循环指定索引,我会返回日期对象:
for (i in seq(length(yearrange))) { show(yearrange[i]) }
#[1] "2012-01-01 UTC"
#[1] "2013-01-01 UTC"
#[1] "2014-01-01 UTC"
#[1] "2015-01-01 UTC"
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以避免索引选项,而不使用foreach,或者这是唯一的方法吗?
rename_ 按预期用于非病理列名称
%>% rename_(foo = 'testcol')
Run Code Online (Sandbox Code Playgroud)
但是,如果我想重命名一个有空格的列呢?
%>% rename_(foo = 'test col')
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
Error in parse(text = x) (from #12) : <text>:1:6: unexpected symbol
Run Code Online (Sandbox Code Playgroud)
我可以使用make.names但是没有办法在没有额外步骤的情况下重命名列吗?
我有一堆4个栅格.我想要一个像素和它的8个邻居之间的平均时间相关性.
一些数据:
library(raster)
r1=raster(matrix(runif(25),nrow=5))
r2=raster(matrix(runif(25),nrow=5))
r3=raster(matrix(runif(25),nrow=5))
r4=raster(matrix(runif(25),nrow=5))
s=stack(r1,r2,r3,r4)
Run Code Online (Sandbox Code Playgroud)
所以对于位置x的像素,在NE,E,SE,S等位置有8个邻居,我想要平均值
cor(x,NE)
cor(x,E)
cor(x,SE)
cor(x,S)
cor(x,SW)
cor(x,W)
cor(x,NW)
cor(x,N)
Run Code Online (Sandbox Code Playgroud)
以及在结果栅格中保存在位置x的平均值.边缘单元将是NA,或者如果可能的话,标记用于计算与其接触的单元(3或5个单元)的平均相关性.谢谢!