小编Ale*_*lex的帖子

删除一定长度的单词之间的空格

我有以下种类的字符串:

A B C Company
XYZ Inc
S & K Co
Run Code Online (Sandbox Code Playgroud)

我想删除这些字符串中在1个字母长度的单词之间的空格.例如,第一个字符串中我想删除之间的空隙A BC,但不会之间C和公司.结果应该是:

ABC Company
XYZ Inc
S&K Co
Run Code Online (Sandbox Code Playgroud)

为此使用正确的正则表达式是什么gsub

regex string r

14
推荐指数
3
解决办法
2314
查看次数

修改R函数中的变量

如何修改传递给R中函数的参数?在C++中,这将通过引用传递.

g=4
abc <- function(x) {x<-5}
abc(g)
Run Code Online (Sandbox Code Playgroud)

我想g设置为5.

arguments r function pass-by-reference

13
推荐指数
1
解决办法
1万
查看次数

使用cbind动态扩展数据框列

我想在循环中构建一个数据框,每次使用时添加一个新列cbind.我尝试以下方法:

test <- NULL
df <- data.frame(x=c(1,2,3,4))
test <- cbind(test, df)
Run Code Online (Sandbox Code Playgroud)

这会产生错误:

Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 0, 4
Run Code Online (Sandbox Code Playgroud)

在R中实例化空白数据帧然后在循环中绑定它的正确方法是什么?

谢谢

null binding r dataframe

13
推荐指数
2
解决办法
3万
查看次数

聚合data.table中的多个列

我有以下样本data.table:

dtb <- data.table(a=sample(1:100,100), b=sample(1:100,100), id=rep(1:10,10))
Run Code Online (Sandbox Code Playgroud)

例如,我想通过id聚合所有列(a和b,尽管它们应该保持分开)colSums.这样做的正确方法是什么?以下不起作用:

 dtb[,colSums, by="id"]
Run Code Online (Sandbox Code Playgroud)

这只是一个示例,我的表有很多列,所以我想避免在函数名中指定所有列

aggregate r dataframe data.table

13
推荐指数
1
解决办法
9687
查看次数

如何判断pycharm何时保存文件

我是PyCharm的新手,我想知道它何时保存我的文件.没有指示器(例如在Notepad ++中)显示文件已被修改.如何判断保存和修改后的时间?

python pycharm

12
推荐指数
1
解决办法
3250
查看次数

当矩阵乘法对系数工作正常时,为什么lm会耗尽内存?

我试图用R做固定效应线性回归.我的数据看起来像

dte   yr   id   v1   v2
  .    .    .    .    .
  .    .    .    .    .
  .    .    .    .    .
Run Code Online (Sandbox Code Playgroud)

然后我决定通过制作yr一个因子并使用它来做到这一点lm:

lm(v1 ~ factor(yr) + v2 - 1, data = df)
Run Code Online (Sandbox Code Playgroud)

但是,这似乎耗尽了内存.我的因素有20个级别,df有1400万行,大约需要2GB才能存储,我在22 GB专用于这个过程的机器上运行它.

于是我决定尝试的东西的老式方法:为每一个我多年的虚拟变量t1t20这样做:

df$t1 <- 1*(df$yr==1)
df$t2 <- 1*(df$yr==2)
df$t3 <- 1*(df$yr==3)
...
Run Code Online (Sandbox Code Playgroud)

并简单地计算:

solve(crossprod(x), crossprod(x,y))
Run Code Online (Sandbox Code Playgroud)

这没有问题,几乎立即产生答案.

我特别好奇当我能够很好地计算系数时,lm会使内存耗尽吗?谢谢.

memory regression r linear-regression lm

11
推荐指数
5
解决办法
1782
查看次数

合并大量的xts对象

我有一个xts互相排列的对象列表.我想把merge列表变成一个大xts对象.我这样做的尝试是"

merged_reg_1_min_prices <- do.call(cbind, reg_1_min_prices)
Run Code Online (Sandbox Code Playgroud)

然而,这似乎耗尽了记忆. reg_1_min_prices相互排斥的日子是6,000天1分钟的回报,所以它不是很大.有谁知道怎么解决这个问题?

需要明确的是:reg_1_min_prices包含每天1分钟价格的互斥日,列表中的每个条目都是一个xts对象.

merge r list zoo xts

11
推荐指数
2
解决办法
4690
查看次数

黄土用新的x值预测

我试图理解该predict.loess函数如何能够在原始数据中不存在的y_hat点处计算新的预测值()x.例如(这是一个简单的例子,我意识到这种类型的例子显然不需要黄土,但它说明了这一点):

x <- 1:10
y <- x^2
mdl <- loess(y ~ x)
predict(mdl, 1.5)
[1] 2.25
Run Code Online (Sandbox Code Playgroud)

loess回归通过在每个处使用多项式来工作x,因此它y_hat在每个处创建预测y.但是,因为没有存储系数,所以在这种情况下的"模型"只是用于预测每个系数的细节y_hat,例如,spandegree.当我这样做时predict(mdl, 1.5),如何predict在这个新的产生价值x?它是在两个最近的现有x值之间进行插值y_hat吗?如果是这样,它的具体细节是什么?

cloess在线阅读了这些文档但无法找到它的讨论内容.

regression r smoothing loess

11
推荐指数
2
解决办法
1万
查看次数

以编程方式将列名称传递给data.table

我希望能够编写一个data.table按组运行回归的函数,然后很好地组织结果.以下是我想要做的一个示例:

require(data.table)
dtb = data.table(y=1:10, x=10:1, z=sample(1:10), weights=1:10, thedate=1:2)
models = c("y ~ x", "y ~ z")

res = lapply(models, function(f) {dtb[,as.list(coef(lm(f, weights=weights, data=.SD))),by=thedate]})

#do more stuff with res
Run Code Online (Sandbox Code Playgroud)

我想将所有这些包装成一个函数,因为它#doe more stuff可能很长.我面临的问题是如何将各种名称传递给data.table?例如,如何传递列名weights?我怎么通过thedate?我想象一个看起来像这样的原型:

myfun = function(dtb, models, weights, dates)
Run Code Online (Sandbox Code Playgroud)

让我说清楚:将公式传递给我的函数不是问题.如果weights我想使用和描述日期的列名称thedate已知,那么我的函数可能看起来像这样:

 myfun = function(dtb, models) {
res = lapply(models, function(f) {dtb[,as.list(coef(lm(f, weights=weights, data=.SD))),by=thedate]})

 #do more stuff with res
 }
Run Code Online (Sandbox Code Playgroud)

但是,对应于thedate和对应的列名称weights是事先未知的.我想将它们传递给我的函数:

#this will not work …
Run Code Online (Sandbox Code Playgroud)

r data.table

11
推荐指数
1
解决办法
2807
查看次数

在sas proc sql中连接两个数字

我有一个表有两个数字值,称为yearmonth.我想创建一个具有一个值称为新表ym,而这正串联yearmonth.这是一个例子:

proc sql;
create table test as 
select CONCAT(year, month) as ym from tbl;
run;
Run Code Online (Sandbox Code Playgroud)

CONCAT那里的功能是什么?

sas

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