我有一个非均匀定位的图像样本,并希望插入到常规网格,因为(除其他外)大多数图像图形函数需要一个规则的网格.我注意到有一些MatLab函数(例如参见随机像素的图像插值),显然会这样做,但找不到一个R-package.
这是一个简单的例子.
#make up some 2D func
y<-matrix(rep(1:10,10) -.5 + runif(100),nrow=10)
x<-matrix(rep(1:10,10) -.5 + runif(100),nrow=10)
inmat<-sin(x) + cos(y)
Run Code Online (Sandbox Code Playgroud)
因此,值inmat在随机位置上.我想某种outmat<-interpolate(inmat,x,y,gridx,gridy)函数,其中inmat,x和y或者是所有矩阵或全部向量(展开矩阵).
我也看到SciPy有http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html这样做.包中是否有这样的功能,R还是需要从端口SciPy或MatLab代码中移植?
不确定这是否有资格获得R-Inferno中的条目,但有人可以评论以下替换工作方式背后的逻辑吗?
foo<-matrix(1:6,2)
bar<-foo[2,c(1,3,1)]
bar
# [1] 2 6 2
foo[2,c(1,3,1)]<-foo[2,c(1,3,1)]+5
foo
# [,1] [,2] [,3]
# [1,] 1 3 5
# [2,] 7 4 11
Run Code Online (Sandbox Code Playgroud)
我的问题是:生成时bar,重复的坐标在输出重复的元素的结果,但修改时foo,重复的坐标并不会导致重复加入操作.(相比之下,for(j in c(1,3,1) ) foo[2,j]<-foo[2,j]+5确实如此).为什么以及如何确切地[<-忽略了重复索引?
字符串的转换比较as.numeric它如何可以这样完成read.fwf.
as.numeric("457") # 457
as.numeric("4 57") # NA with warning message
Run Code Online (Sandbox Code Playgroud)
现在从包含"5 7 12 4"的文件"fwf.txt"中读取.
foo<-read.fwf('fwf.txt',widths=c(5,5),colClasses='numeric',header=FALSE)
V1 V2
1 57 124
foo<-read.fwf('fwf.txt',widths=c(5,5),colClasses='character',header=FALSE)
V1 V2
1 5 7 12 4
Run Code Online (Sandbox Code Playgroud)
现在,我将注意到在"数字"版本中,read.fwf连接的方式与Fortran相同.我只是有点惊讶它没有抛出错误或NA以同样的方式as.numeric.谁知道为什么?
在我彻底破坏事物的过程中,请考虑:
gbar<-function(x,y,x,a) x+2*y-4*a
Error: repeated formal argument 'x' on line 1
Run Code Online (Sandbox Code Playgroud)
R 正确检查我定义的函数是否违法正式.
但如果我手动搞砸了:
ffoo<-function(x,y,a) x+2*y-4*a
formals(ffoo)<-c(x=7, formals(ffoo))
Run Code Online (Sandbox Code Playgroud)
然后我只会在某些情况下发现某些事情是无效的.
ffoo(3,4,5,6)将会正确执行(虽然可能没有给我我预期的答案),也将如此ffoo(y=3,a=2); 然后ffoo(x=5,y=3,a=2)会抛出关于模糊参数名称的错误.
那么:是否有任何base-R或高级实用程序包具有对formals现有函数进行"完整性"检查的功能?
嗨,您好!
我正在尝试计算6种不同技能(C1,C2,... C6)中的一些玩家的玩家国际象棋排名.我有一个巨大的游戏数据框(数据)看起来像这样(头(数据)).在这个游戏中,一个人(用户)选择在另外两个人(p1/p2)之间获胜.
row.names user p1 p2 skill win looser time
---------------------------------------------------------
2 KE CL HK C1 CL HK 433508371
25 KE HK JT c1 HK JT 433508401
35 KE AB JT C1 AB JT 433508444
110 NF IP HE C1 HE IP 433508837
78 NF IP AS C1 AS IP 433508848
82 NF IT CV C1 CV IT 433508860
Run Code Online (Sandbox Code Playgroud)
在另一个表格(old_users)中,我跟踪所有玩家在6种技能中的国际象棋得分(head(old_users))
user C1 C2 C3 C4 C5 C6
1 BD 1200 1200 1200 1200 1200 1200
2 NF 1200 1200 …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个 md5 哈希函数而不R调用任何 C 例程。虽然我的代码执行得很好,但输出永远不会匹配tools::md5sum(它确实与各种在线文档中提供的示例匹配)。我怀疑某个地方存在字节顺序(或字顺序)问题;正如下面提供的代码所示,我尝试插入一些触发器,但没有成功。\n我检查了输出中是否存在简单的不匹配,例如正确的字节,但顺序错误,但没有成功。
要运行此函数,您需要库Rmpfr以及bigBits此处提供的函数(flip32、flip16和bigRotate)。
# need these to run:\nlibrary(Rmpfr)\nlibrary(bigBits)\n\nmymd5 <- function(msg){\n\n if(!is(msg,'raw')) msg <- charToRaw(as.character(msg))\n# a const to be used when truncating values > ffffffff\ntwo32 <- as.bigz(2^(as.bigz(32))) \n\nsidx <- c( 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22 , 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, …Run Code Online (Sandbox Code Playgroud) 好吧,我陷入了一个愚蠢的循环中.我已经阅读了如何通过列对数据框进行排序的有用想法?,但还需要一个提示.我想要一个带有任意列数的矩阵的函数,并按顺序对所有列进行排序.例如,对于foo具有N列的矩阵,相当于foo[order(foo[,1],foo[,2],...foo[,N]),].我很乐意使用with或by构造,并在必要时定义colnames我的矩阵,但我无法弄清楚如何自动收集order(或with)的参数.或者,我应该说,我可以用它paste然后构建整个血腥的字符串call,但我确信有一种更简单的方法.
我知道我可以在绘图时指定纵横比,例如plot(x,y,asp=5).有没有办法在允许自动缩放后检索宽高比(如plot(x,y))?我问的原因是我在玩text(x,y,'mystring',srt=local_slope),我local_slope根据基础曲线和x感兴趣的价值来计算.麻烦的是,asp!=1为此,文本以与绘制的数据集的显示斜率不同的角度旋转.样品:
x<- -10:10
y<- x^2
plot(x,y,t='l',asp=0.1)
# the slope at x=1 is 2 but the default plot aspect ratio is far from 1:1
text(1,1,'foo',srt= 180/pi*atan(2) ) #ugly-looking
text(-1,1,'bar',srt= (180/pi*atan(2/10))) #better
Run Code Online (Sandbox Code Playgroud) 哪种算法可用于生成具有多个成功路径的迷宫,如果算法是某些知名算法的修改版本,则解释或添加链接。
我正在使用二维数组 A 来存储 maze 的配置。
假设如果迷宫的大小是 n * n 那么从 A[0][0] 到 A[n-1][n-1] 应该有不止一条路径。
可以说我有矩阵
a = [ 1 1 1 1;
1 1 1 1;
1 1 1 1]
Run Code Online (Sandbox Code Playgroud)
我想将子矩阵a(2:3, 2:3)乘以5; 所以新的矩阵是
a = [ 1 1 1 1;
1 5 5 1;
1 5 5 1]
Run Code Online (Sandbox Code Playgroud)
那是什么功能?我试过这个=>
a = a(2:3, 2:3)*5;
Run Code Online (Sandbox Code Playgroud)
但那只会给我一个新的矩阵2x2
a = [5 5;
5 5]
Run Code Online (Sandbox Code Playgroud) r ×8
algorithm ×2
matlab ×2
chess ×1
endianness ×1
matrix ×1
maze ×1
md5 ×1
md5sum ×1
optimization ×1
performance ×1
plot ×1
scipy ×1
sorting ×1
subset ×1