在R中,使用maps包和gcIntermediate函数,如何在两个国家/地区之间绘制线条?它需要lat-long,但我不确定我应该为各国提供什么样的长期(比如我想在美国和瑞典之间画一条线)
Expand.grid(a,b,c) 生成矩阵中 a、b 和 c 中的值的所有组合 - 本质上填充三维立方体的体积。我想要的是一种从以立方体为中心的立方体(或更高维结构)中获取切片或线的方法。
因此,假设 a、b、c 都是奇数长度向量(因此它们有一个中心),在这种情况下,假设它们的长度为 5。我假设的 slice.grid 函数:
slice.grid(a,b,c,dimension=1)
Run Code Online (Sandbox Code Playgroud)
返回沿三个中心线的点的坐标矩阵。几乎相当于:
rbind(expand.grid(a[3],b,c[3]),
expand.grid(a,b[3],c[3]),
expand.grid(a[3],b[3],c))
Run Code Online (Sandbox Code Playgroud)
几乎,因为它的中心点重复了三次。此外:
slice.grid(a,b,c,dimension=2)
Run Code Online (Sandbox Code Playgroud)
应返回一个等价于的矩阵:
rbind(expand.grid(a,b,c[3]), expand.grid(a,b[3],c), expand.grid(a[3],b,c))
Run Code Online (Sandbox Code Playgroud)
这是三个相交的轴对齐平面(矩阵中的交叉点有重复的点)。
进而:
slice.grid(a,b,c,dimension=3)
Run Code Online (Sandbox Code Playgroud)
与 Expand.grid(a,b,c) 相同。
对于三个参数来说这还不错,但理想情况下我想用传递给函数 Expand.grid(a,b,c,d,e,f,dimension=4) 的 N 个参数来做到这一点 - 这不太可能但我希望维度大于 3。
可以通过执行 Expand.grid 然后提取所需的点来完成,但我不确定如何构建该标准。而且我总有一种感觉,这个函数存在于某个包中的某个地方......
[编辑] 是的,我想我现在已经弄清楚了标准 - 它与中心值在每行中出现的次数有关。如果它小于或等于你的维度+1...
但是生成完整的矩阵很快就会变大。暂时就这样吧
我是R编程的新手,我参与使用R表示图形.我想问一下如何实现一个代码,它可以根据邻接矩阵找到两个顶点或节点之间的所有路径.我已经在其他编程语言中看到了很多实现,但是大多数都使用(BFS)中的队列来使它们工作.例如,这是我的图表的边缘列表.
[,1] [,2]
[1,] 0 1
[2,] 1 2
[3,] 1 3
[4,] 1 4
[5,] 2 5
[6,] 2 6
[7,] 5 7
[8,] 5 8
[9,] 6 9
[10,] 6 10
[11,] 8 11
[12,] 10 12
[13,] 11 13
[14,] 11 14
[15,] 11 15
[16,] 12 16
[17,] 12 17
[18,] 12 18
[19,] 13 19
[20,] 16 20
[21,] 19 21
[22,] 19 22
[23,] 20 22
[24,] 20 23
Run Code Online (Sandbox Code Playgroud)
如果我想要节点0和节点22之间的所有路径,它们应该是两条路径:
[[1]]
[1] 0 1 …
Run Code Online (Sandbox Code Playgroud) 所以我想将我的数据框子集化为选择具有每日最大值的行.
Site Year Day Time Cover Size TempChange
ST1 2011 97 0.0 Closed small 0.97
ST1 2011 97 0.5 Closed small 1.02
ST1 2011 97 1.0 Closed small 1.10
Run Code Online (Sandbox Code Playgroud)
数据框的部分在上面.我想只为每个变量Day选择具有变量TempChange的最大值的行.我想这样做是因为我对这些特定时间的特定变量(未显示)感兴趣.
修改示例和要求的输出
Site Day Temp Row
a 10 0.2 1
a 10 0.3 2
a 11 0.5 3
a 11 0.4 4
b 10 0.1 5
b 10 0.8 6
b 11 0.7 7
b 11 0.6 8
c 10 0.2 9
c 10 0.3 10
c 11 0.5 11
c …
Run Code Online (Sandbox Code Playgroud) 如何在R中以数字形式求解以下形式的方程式的根:
f(r)=r*c+1-B*c-exp(-M(B-r))
Run Code Online (Sandbox Code Playgroud)
其中M,B和c是已知常数。
提前致谢。
我想要一个图像(最好是SVG)作为R中现有图形的插图,并在图像周围放置黑色边框。
R中的基本功能可能吗?我需要包装吗?
我有一个简单的矩阵,例如
test <- matrix(c("u1","p1","u1","p2","u2","p2","u2",
"p3","u3","p1","u4","p2","u5","p1",
"u5","p3","u6","p3","u7","p4","u7",
"p3","u8","p1","u9","p4"),
ncol=2,byrow=TRUE)
colnames(test) <- c("user","product")
test1<-as.data.frame(test)
Run Code Online (Sandbox Code Playgroud)
测试:
user product
1 u1 p1
2 u1 p2
3 u2 p2
4 u2 p3
5 u3 p1
6 u4 p2
7 u5 p1
8 u5 p3
9 u6 p3
10 u7 p4
11 u7 p3
12 u8 p1
13 u9 p4
Run Code Online (Sandbox Code Playgroud)
我想算一下有多少用户一起购买产品对,比如p1&p2,p2和p3 ......
table(test1$product,test1$product)
给我这个:
p1 p2 p3 p4
p1 4 0 0 0
p2 0 3 0 0
p3 0 0 4 0
p4 0 0 …
Run Code Online (Sandbox Code Playgroud) 如何使用文件输入模拟python交互式会话并保存成绩单?换句话说,如果我有一个文件sample.py
:
#
# this is a python script
#
def foo(x,y):
return x+y
a=1
b=2
c=foo(a,b)
c
Run Code Online (Sandbox Code Playgroud)
我希望sample.py.out
看起来像这样(省略python横幅):
>>> #
... # this is a python script
... #
... def foo(x,y):
... return x+y
...
>>> a=1
>>> b=2
>>>
>>> c=foo(a,b)
>>>
>>> c
3
>>>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过stdin到python,twitter的建议是'bash script'没有细节(用bash中的脚本命令播放,没有欢乐).我觉得应该很容易,而且我错过了一些简单的东西.我是否需要使用exec
或其他东西编写解析器?
Python或ipython解决方案没问题.然后我可能希望转换为HTML和语法在Web浏览器中突出显示,但这是另一个问题....
在base r中,很容易从数据框中提取列(变量)的名称
> testdf <- data.frame(a1 = rnorm(1e5), a2 = rnorm(1e5), a3 = rnorm(1e5), a4 = rnorm(1e5), a5 = rnorm(1e5), a6 = rnorm(1e5))
> names(testdf)
[1] "a1" "a2" "a3" "a4" "a5" "a6"
Run Code Online (Sandbox Code Playgroud)
但是使用Sparklyr时,事情变得更加复杂。复制数据框以生成火花后,
> testdf_tbl <- copy_to(sc, testdf, overwrite = TRUE)
> names(testdf_tbl)
[1] "src" "ops"
Run Code Online (Sandbox Code Playgroud)
变量名称实际上位于“ ops”内部
> testdf_tbl$ops$vars
[1] "a1" "a2" "a3" "a4" "a5" "a6"
Run Code Online (Sandbox Code Playgroud)
如果这一切全部完成,那就没有问题了(也不需要问这个问题)。但是,每次对testdf_tbl进行操作时,列/变量的名称都会更改其位置,如下所示。
> testdf_tbl <- testdf_tbl %>% select(-a1)
> testdf_tbl$ops$vars
NULL
> testdf_tbl$ops$x$vars
[1] "a1" "a2" "a3" "a4" "a5" "a6"
Run Code Online (Sandbox Code Playgroud)
另一个操作将另一个$ x添加到路径..依此类推。
> testdf_tbl …
Run Code Online (Sandbox Code Playgroud) 给定一个英国邮政编码的"模板",如"A9 9AA",其中"A"是一个字母占位符,"9"是一个数字占位符,我要生成随机字符串邮编像"H8 4GB".字母可以是任何大写字母,编号从0到9.
因此,如果模板是"AA9A 9AA",那么我想要像"WC1A 9LK"这样的字符串.我现在忽略了生成"真实"的邮政编码,所以如果"WC1A"是一个有效的外向代码我就不会感到困扰.
我试图从stringi
包中获取函数来解决问题,但问题似乎是替换或匹配模板中的"A"只会替换第一个替换,例如:
stri_replace_all_fixed("A9 9AA",c("A","A","A"), c("X","Y","Z"), vectorize_all=FALSE)
[1] "X9 9XX"
Run Code Online (Sandbox Code Playgroud)
所以它不会用替换向量中的每个元素替换每个"A"(但这是设计的).
也许stringi
我已经错过了某些内容或基础R - 我想将它保存在这些包中,所以我不会膨胀我正在做的事情.
蛮力方法是拆分模板,做替换,将结果粘贴在一起,但我想看看是否有更快,自然的矢量化解决方案.
总结一下:
foo("A9 9AA") # return like "B6 5DE"
foo(c("A9 9AA","A9 9AA","A9A 9AA")) # returns c("Y6 5TH","D4 8JH","W0Z 3KQ")
Run Code Online (Sandbox Code Playgroud)
这是一个非矢量化版本,它依赖于构造表达式并对其进行评估......
random_pc <- function(fmt){
cc = gsub(" ",'c(" ")',gsub("9","sample(0:9,1)",gsub("A","sample(LETTERS,1)",strsplit(fmt,"")[[1]])))
paste(eval(parse(text=paste0("c(",paste(cc,collapse=","),")"))),collapse="")
}
> random_pc("AA9 9AA")
[1] "KO6 1AY"
Run Code Online (Sandbox Code Playgroud)