我将如何有效地采用值1:n的1乘1递增随机样本,确保每个随机采样值始终高于先前值?
例如:
对于值1:100,得到一个随机数,比如哪个是61.(当前列表= 61)
然后选择62和100之间的另一个数字,比如哪个是90(当前列表= 61,90)
然后在91之间选择另一个数字和100,说哪个是100.
在最大值被击中时停止进程(最终列表= 61,90,100)
我被困在循环的土地上,以这种笨重的方式思考:
a1 <- sample(1:100,1)
if(a1 < 100) {
a2 <- sample((a+1):100,1)
}
etc etc...
Run Code Online (Sandbox Code Playgroud)
我想报告最终的向量是a1,a2,a(n)的串联:
result <- c(a1,a2)
Run Code Online (Sandbox Code Playgroud)
即使这听起来像是一个家庭作业问题,但事实并非如此.我很幸运地离开了很多年前的家庭作业.
我试图在5000列和30行的数据框架上进行PCA
Sample <- read.table(file.choose(), header=F,sep="\t")
Sample.scaled <- data.frame(apply(Sample,2,scale))
pca.Sample <- prcomp(Sample.scaled,retx=TRUE)`
Run Code Online (Sandbox Code Playgroud)
得到了错误
Error in svd(x, nu = 0) : infinite or missing values in 'x'
sum(is.na(Sample))
[1] 0
sum(is.na(Sample.scaled))
[1] 90
Run Code Online (Sandbox Code Playgroud)
尝试使用以下内容忽略所有na值
pca.Sample <- prcomp(na.omit(Sample.scaled),retx=TRUE)
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误
Error in svd(x, nu = 0) : 0 extent dimensions
Run Code Online (Sandbox Code Playgroud)
有报告说,na.action需要给出公式,因此尝试如下
pca.Sample <- prcomp(~.,center=TRUE,scale=TRUE,Sample, na.action=na.omit)
Run Code Online (Sandbox Code Playgroud)
现在收到以下错误
Error in prcomp.default(x, ...) :
cannot rescale a constant/zero column to unit variance
Run Code Online (Sandbox Code Playgroud)
认为问题可能是因为"我的一个数据列是常量.常量的方差是0,然后缩放将除以0,这是不可能的."
但不确定如何解决这个问题.任何帮助非常感谢....
我试图弄清楚为什么rbind函数在加入没有名字的data.frames时没有按预期工作.这是我的测试:
test <- data.frame(
id=rep(c("a","b"),each=3),
time=rep(1:3,2),
black=1:6,
white=1:6,
stringsAsFactors=FALSE
)
# take some subsets with different names
pt1 <- test[,c(1,2,3)]
pt2 <- test[,c(1,2,4)]
# method 1 - rename to same names - works
names(pt2) <- names(pt1)
rbind(pt1,pt2)
# method 2 - works - even with duplicate names
names(pt1) <- letters[c(1,1,1)]
names(pt2) <- letters[c(1,1,1)]
rbind(pt1,pt2)
# method 3 - works - with a vector of NA's as names
names(pt1) <- rep(NA,ncol(pt1))
names(pt2) <- rep(NA,ncol(pt2))
rbind(pt1,pt2)
# method 4 - …Run Code Online (Sandbox Code Playgroud) 我有一个带空间坐标和一个变量的矩阵数据.空间分辨率为1000米.
> str(dat1)
> List of 3
> $ x: num [1:710] 302340 303340 304340 305340 306340 ...
> $ y: num [1:1241] 5431470 5432470 5433470 5434470 5435470 ...
> $ z: num [1:710, 1:1241] 225 225 225 225 225 ...
Run Code Online (Sandbox Code Playgroud)
我想将其转换为栅格格式.
> dat1$x[1:10]
> [1] 302339.6 303339.6 304339.6 305339.6 306339.6 307339.6 308339.6 309339.6 310339.6 311339.6
> dat1$y[1:10]
> [1] 5431470 5432470 5433470 5434470 5435470 5436470 5437470 5438470 5439470 5440470
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来完成它.但我得到的决议与我的决议不一样.有没有更好的方法来获得与我的真实数据相同的分辨率?
> r <-raster(
dat1$z,
xmn=range(dat1$x)[1], xmx=range(dat1$x)[2],
ymn=range(dat1$y)[1], ymx=range(dat1$y)[2],
crs=CRS("+proj=utm …Run Code Online (Sandbox Code Playgroud) 我有一个数据框存储拥有不同种类的不同种类的水果.如下
apple banana orange
Tim 3 0 2
Tom 0 1 1
Bob 1 2 2
Run Code Online (Sandbox Code Playgroud)
同样,数字是水果的数量.如何将其更改为存在矩阵,这意味着如果一个人有一个水果,无论他有多少,那么我记录1,如果没有,记录0.如下
apple banana orange
Tim 1 0 1
Tom 0 1 1
Bob 1 1 1
Run Code Online (Sandbox Code Playgroud) 是否可以在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) 如果我在R中有一个数据集,那么导出它的好方法是什么我可以将它用于像Shapeways这样的3D打印服务?
我没有任何"真正的"CAD软件,但我之前使用过Google Sketchup.
在我的例子中,对象可以用两个表面图来描述,如下所示:
x <- y <- seq(0,1,by=0.01)
persp(x, y, outer(x, y, function(x,y) (x+y)^2))
persp(x, y, outer(x, y, function(x,y) rep(0,length(x))), zlim=c(-1,1))
Run Code Online (Sandbox Code Playgroud)
...我希望一起出现作为一个要打印的对象.有任何想法吗?
我想加入2个数据帧,我正在使用Julia指南中的intructions:http://dataframesjl.readthedocs.org/en/latest/joins_and_indexing.html?highlight=join
join(a, b, on = :ID, kind = :inner)
Run Code Online (Sandbox Code Playgroud)
现在,我如何加入具有不同名称的列:
我试过以下但它不起作用"
join(a, b, on = [ :ID, :name_id ], kind = :inner)
Run Code Online (Sandbox Code Playgroud)
如果没有实现,这将是一个很好的功能
我将找到rank-logit模型的参数.但误差总是表明存在非有限的有限差分值.如果我将"b0 <-rep(0,5)"更改为"b0 <-rep(-1,5)",则非有限差分值后的数字从2变为1.如果需要数据集,我会通过电子邮件发送给您.
cjll <- function(b){
U <- X%*%b
lSU <- csm%*%exp(U)
lSU <- (lSU!=0)*lSU+(lSU==0)
LL <- sum(Ccsm%*%U-log(lSU))
return(LL)
}
b0 <- rep(0,5)
res <- optim(b0,cjll,method="BFGS",hessian=TRUE,control=list(fnscale=-1))
#Error in optim(b0, cjll, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
# non-finite finite-difference value [2]
b <- res$par
#Error: object 'res' not found
Run Code Online (Sandbox Code Playgroud) 我想在data.table中返回一个新列,该列显示向下的行数,直到达到低于当前值(Temp)的值.
library(data.table)
set.seed(123)
DT <- data.table( Temp = runif(10,0,20) )
Run Code Online (Sandbox Code Playgroud)
这就是我希望它看起来的样子:
set.seed(123)
DT <- data.table(
Temp = runif(10,0,20),
Day_Below_Temp = c("5","1","3","2","1","NA","3","1","1","NA")
)
Run Code Online (Sandbox Code Playgroud)