小编Sim*_*lon的帖子

R中逻辑回归公式的实现

我想R中使用随机梯度下降,以建立自己的回归函数,但我现在所拥有的使权重成长过程中没有约束,因此从来没有停止:

# Logistic regression
# Takes training example vector, output vector, learn rate scalar, and convergence delta limit scalar
my_logr <- function(training_examples,training_outputs,learn_rate,conv_lim) {
  # Initialize gradient vector
  gradient <- as.vector(rep(0,NCOL(training_examples)))
  # Difference between weights
  del_weights <- as.matrix(1)
  # Weights
  weights <- as.matrix(runif(NCOL(training_examples)))
  weights_old <- as.matrix(rep(0,NCOL(training_examples)))

  # Compute gradient
  while(norm(del_weights) > conv_lim) {

    for (k in 1:NROW(training_examples)) {
      gradient <- gradient + 1/NROW(training_examples)*
        ((t(training_outputs[k]*training_examples[k,]
            /(1+exp(training_outputs[k]*t(weights)%*%as.numeric(training_examples[k,]))))))
    }

    # Update weights
    weights <- weights_old - learn_rate*gradient
    del_weights <- as.matrix(weights_old - weights)
    weights_old <- …
Run Code Online (Sandbox Code Playgroud)

r linear-regression

6
推荐指数
1
解决办法
2544
查看次数

合并不合格因子变量

更新:固定

这是在即将发布的R版本中修复的3.1.0.来自CHANGELOG:

combn(x, simplify = TRUE)现在给出因子输入的因子结果 x(先前的用户错误).
PR#15442相关


我刚注意到一件奇怪的事情.除了第一个组合之外,为什么除了第一个组合,其他所有变量都combn显示为factor基础数值?

x <- as.factor( letters[1:3] )

combn( x , 2 )
#     [,1] [,2] [,3]
#[1,] "a"  "1"  "2" 
#[2,] "b"  "3"  "3" 
Run Code Online (Sandbox Code Playgroud)

x一个字符时不会发生这种情况:

x <- as.character( letters[1:3] )

combn( x , 2 )
#     [,1] [,2] [,3]
#[1,] "a"  "a"  "b" 
#[2,] "b"  "c"  "c"
Run Code Online (Sandbox Code Playgroud)

可在OS X 10.7.5和Windows 7上的R64上重现.

syntax r

6
推荐指数
1
解决办法
703
查看次数

R - 根据第二个数据帧中最接近的匹配来分配列值

我有两个数据框,logger和df(次数是数字):

logger <- data.frame(
time = c(1280248354:1280248413),
temp = runif(60,min=18,max=24.5)
)

df <- data.frame(
obs = c(1:10),
time = runif(10,min=1280248354,max=1280248413),
temp = NA
)
Run Code Online (Sandbox Code Playgroud)

我想在logf $ time中搜索与df $ time中每行最接近的匹配,并将相关的logger $ temp分配给df $ temp.到目前为止,我已成功使用以下循环:

for (i in 1:length(df$time)){
closestto<-which.min(abs((logger$time) - (df$time[i])))
df$temp[i]<-logger$temp[closestto]
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在有大数据帧(记录器有13,620行,df有266138),处理时间很长.我已经读过循环不是最有效的方法,但我不熟悉替代方案.有更快的方法吗?

loops r matching closest dataframe

6
推荐指数
1
解决办法
3343
查看次数

fread,data.table中的小数点设置

我想使用来自data.table的fread,但得到一个与小数点相关的警告[这里是','而不是'.'].通常我使用'.',但在某些情况下我必须使用','作为小数点导入文件.

在read.csv中我可以设置小数点分隔符:

df <- read.csv("mydata.csv", sep=";", dec=",")
Run Code Online (Sandbox Code Playgroud)

我怎样才能在data.table中的fread函数中执行此操作?同

df=fread('mydata.csv',sep=';')
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息:

Warning message:
In fread("mydata.csv",  :
Bumped column 7 to type character on data row 86, field contains '4,5'. 
Run Code Online (Sandbox Code Playgroud)

,其中4,5是在read.csv中正确读取的值为"4.5",其中sep =','.

sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
1
解决办法
2827
查看次数

data.table :: fread不喜欢第一列中的缺失值

这是data.table::fread(版本1.9.2)中的错误还是错误的用户期望/错误?

考虑这个简单的例子,我有一个值表,TAB用可能缺少的值分隔.如果第一列中fread缺少值,则会感到沮丧,但如果其他地方缺少值,则返回data.table我期望的:

# Data with missing value in first column, third row and last column, second row:
12  876 19
23  39  
    15  20

fread("12   876 19
23  39  
    15  20")
#Error in fread("12\t876\t19\n23\t39\t\n\t15\t20") : 
#  Not positioned correctly after testing format of header row. ch='    '

# Data with missing values last column, rows two and three: 
"12 876 19
23  39  
15  20  "

fread( "12  876 19
23  39 …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
1
解决办法
1267
查看次数

在Windows中已经在版本控制下更改RStudio项目的Git协议

我喜欢使用RStudio,因为它内置了与版本控制系统的集成.然而,随着RStudio在Windows上是有办法从改变Git协议httpssh反之亦然一个项目 已经在版本控制,而不必首先删除并重新创建项目?

我可能会遗漏一些东西,但我最初克隆了我的仓库http,我后来发现这是一个巨大的痛苦,因为每次我想将项目更改推送到GitHub我必须重新输入我的用户名和密码.所以我从版本控制(Project -> Project Option -> Git/SVN -> Version Control System: none)中删除了该项目,然后尝试重新添加希望使用的版本控制,ssh但它只允许您返回到您在创建项目时首先选择的原始协议.

我发现更改协议的唯一方法是删除项目,然后使用正确的ssh参数从GitHub创建一个新项目.我真的希望能够更改项目版本控制协议,httpssh不是先删除和重新克隆.

这可能吗?

git version-control r windows-7 rstudio

5
推荐指数
1
解决办法
740
查看次数

无意中从R base包重写了一个函数,如何恢复默认?

which()通过自己的代码意外地从R中的基础包重写了函数.我which()真的很需要原始的默认功能,但是错误地将我的工作区(R Console)保存为新的(我自己的)which()函数定义(具有讽刺意味的是使用其中的原始which()函数),所以现在根本不起作用.我如何获得默认值which()?有没有办法找到which(函数的源代码?

r function base

5
推荐指数
1
解决办法
785
查看次数

将矢量分成R中不等长度的三个矢量

来自相对n00b的问题:我想将一个向量分成三个不同长度的向量,其中的值随机分配给每个向量.例如,我想将长度为12的矢量分成长度为2,3和7的向量

我可以使用这个获得三个相等大小的向量:

test<-1:12
split(test,sample(1:3))
Run Code Online (Sandbox Code Playgroud)

关于如何将测试分成2,3和7的矢量而不是3个长度为4的矢量的建议?

r

5
推荐指数
2
解决办法
8760
查看次数

如何修剪和替换字符串

string<-c("       this is a string  ")
Run Code Online (Sandbox Code Playgroud)

是否可以在弦的两侧(或根据需要只是一侧)修剪掉白色空间,并用R中的所需字符替换它?字符串两侧的白色空格数不同,必须在更换时保留.

"~~~~~~~this is a string~~"
Run Code Online (Sandbox Code Playgroud)

regex string r

5
推荐指数
3
解决办法
164
查看次数

剪切线以绘制区域并在绘制区域外显示文本

我想限制绘图的可见y范围。为了保留超出此范围的值,我需要设置oob超出范围),rescale_none并且效果很好。

但是,我还要在情节外的空白处添加一些文本。为此,我需要关闭剪辑。这样的结果是,超出界限的值在边距的绘图区域之外绘制。

无论如何,是否在页边距中绘制文本裁剪值以绘制区域?

#  Data
set.seed(1)
df <- data.frame( x=1:100,y=rnorm(100,mean=1,sd=1) )
# Basic plot

library(ggplot2)
library(scales)
library(grid)

g <- ggplot(df)+
geom_line(aes(x,y))


#  Values exceeding scale limits are dropped
g1 <- g + scale_y_continuous( limits = c(0,2) )
Run Code Online (Sandbox Code Playgroud)

OOB值下降

#  This is what I want
g2 <- g + scale_y_continuous( limits = c(0,2) , oob = rescale_none )
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

#  ...But, I would like to plot some text outside the plotting region
#  and need …
Run Code Online (Sandbox Code Playgroud)

graphics plot r ggplot2

5
推荐指数
1
解决办法
1114
查看次数