我想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版本中修复的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上重现.
我有两个数据框,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),处理时间很长.我已经读过循环不是最有效的方法,但我不熟悉替代方案.有更快的方法吗?
我想使用来自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) 这是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) 我喜欢使用RStudio,因为它内置了与版本控制系统的集成.然而,随着RStudio在Windows上是有办法从改变Git协议http来ssh反之亦然一个项目 已经在版本控制,而不必首先删除并重新创建项目?
我可能会遗漏一些东西,但我最初克隆了我的仓库http,我后来发现这是一个巨大的痛苦,因为每次我想将项目更改推送到GitHub我必须重新输入我的用户名和密码.所以我从版本控制(Project -> Project Option -> Git/SVN -> Version Control System: none)中删除了该项目,然后尝试重新添加希望使用的版本控制,ssh但它只允许您返回到您在创建项目时首先选择的原始协议.
我发现更改协议的唯一方法是删除项目,然后使用正确的ssh参数从GitHub创建一个新项目.我真的希望能够更改项目版本控制协议,http而ssh不是先删除和重新克隆.
这可能吗?
我which()通过自己的代码意外地从R中的基础包重写了函数.我which()真的很需要原始的默认功能,但是错误地将我的工作区(R Console)保存为新的(我自己的)which()函数定义(具有讽刺意味的是使用其中的原始which()函数),所以现在根本不起作用.我如何获得默认值which()?有没有办法找到which(函数的源代码?
来自相对n00b的问题:我想将一个向量分成三个不同长度的向量,其中的值随机分配给每个向量.例如,我想将长度为12的矢量分成长度为2,3和7的向量
我可以使用这个获得三个相等大小的向量:
test<-1:12
split(test,sample(1:3))
Run Code Online (Sandbox Code Playgroud)
关于如何将测试分成2,3和7的矢量而不是3个长度为4的矢量的建议?
string<-c(" this is a string ")
Run Code Online (Sandbox Code Playgroud)
是否可以在弦的两侧(或根据需要只是一侧)修剪掉白色空间,并用R中的所需字符替换它?字符串两侧的白色空格数不同,必须在更换时保留.
"~~~~~~~this is a string~~"
Run Code Online (Sandbox Code Playgroud) 我想限制绘图的可见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)

# 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)