小编dal*_*ogm的帖子

哪个更快更好,Switch Case还是其他如果?

哪种方法更好更快:if还是switch?

if(x==1){
  echo "hi";
} else if (x==2){
  echo "bye";
}

switch(x){
  case 1
    ...
  break;
  default;
} 
Run Code Online (Sandbox Code Playgroud)

php performance if-statement switch-statement

65
推荐指数
3
解决办法
6万
查看次数

使用SSH tunel时,无法通过套接字错误连接到本地MySQL服务器

我试图使用dplyr连接到远程数据库,我通常通过ssh隧道查询.

我首先建立一个如下所示的ssh隧道:

alias tunnel_ncg='ssh -fNg -L 3307:127.0.0.1:3306 mysqluser@myhost mysql5 -h 127.0.0.1:3306 -P 3307 -u mysqluser -p mypassword'
Run Code Online (Sandbox Code Playgroud)

此时,我可以通过连接到localhost:3307来访问数据库.例如:

mysql -h '127.0.0.1' -P 3307 -u mysqluser
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过dplyr访问同一个数据库,我收到一个错误,抱怨它无法连接到本地MySQL套接字:

> conDplyr = src_mysql(dbname = "mydb", user = "mysqluser", password = "mypassword", host = "localhost", port=3307)
Error in .local(drv, ...) : 
  Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Run Code Online (Sandbox Code Playgroud)

我的理解是RMySQL/dplyr正在尝试在本地计算机中查找套接字文件,但他们应该真正在远程服务器中查找它.有没有办法解决这个问题,或者解决方法?

更新:

如果我尝试通过dbConnect/RMySQL连接,连接正常:

> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
Run Code Online (Sandbox Code Playgroud)

r ssh-tunnel rmysql dplyr

12
推荐指数
1
解决办法
8960
查看次数

Kruskal-Wallis测试与成对比较的详细信息

标准stats :: kruskal.test模块允许计算数据集上的kruskal-wallis测试:

>>> data(diamonds)
>>> kruskal.test(price~carat, data=diamonds)

Kruskal-Wallis rank sum test

data:  price by carat by color 
Kruskal-Wallis chi-squared = 50570.15, df = 272, p-value < 2.2e-16
Run Code Online (Sandbox Code Playgroud)

这是正确的,它给了我一个概率,即数据中的所有组具有相同的均值.

但是,我希望得到每对比较的详细信息,比如D和E颜色的钻石具有相同的平均价格,就像其他一些软件(SPSS)要求进行Kruskal测试时一样.

我从pgirmess包中找到了kruskalmc,它允许我做我想做的事:

> kruskalmc(diamonds$price, diamonds$color)
Multiple comparison test after Kruskal-Wallis 
p.value: 0.05 
Comparisons
      obs.dif critical.dif difference
D-E  571.7459     747.4962      FALSE
D-F 2237.4309     751.5684       TRUE
D-G 2643.1778     726.9854       TRUE
D-H 4539.4392     774.4809       TRUE
D-I 6002.6286     862.0150       TRUE
D-J 8077.2871    1061.7451       TRUE
E-F 2809.1767     680.4144       TRUE
E-G 3214.9237     653.1587 …
Run Code Online (Sandbox Code Playgroud)

r

11
推荐指数
1
解决办法
4万
查看次数

修改lm或loess函数以在ggplot2的geom_smooth中使用它

我需要修改lm(或最终loess)函数,以便我可以在ggplot2 geom_smooth(或stat_smooth)中使用它.

例如,这是stat_smooth通常使用的方式:

> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm')`
Run Code Online (Sandbox Code Playgroud)

我想定义一个自定义lm2函数作为method参数的值stat_smooth,所以我可以自定义它的行为.

> lm2 <- function(formula, data, ...)
  {
      print(head(data))
      return(lm(formula, data, ...))
  }
> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm2')
Run Code Online (Sandbox Code Playgroud)

请注意,我已将其用作method='lm2'参数stat_smooth.当我执行此代码时,获取错误:

eval中的错误(expr,envir,enclos):'nthcdr'需要一个列表来降低CDR

我不太懂.lm2在外面运行时,该方法非常有效stat_smooth.我玩了一下,我有不同类型的错误,但由于我不熟悉R的调试工具,我很难调试它们.老实说,我没有得到我应该把它放在return()电话里面.

r ggplot2 lm

9
推荐指数
1
解决办法
2502
查看次数

如何从姓氏中猜出一个人的国籍?

我可以用什么方法来预测一个人姓氏的国籍?

我有大量的作者文本和姓氏.我想确定哪些文本是由拉丁语发言人撰写的,哪些文本是由母语为英语的人撰写的,以便研究某一组的某些写作风格模式是否与另一组不同.

我已经查看谷歌和pubmed的姓氏数据库,但我找不到任何免费访问.另一种方法是使用一些正则表达式,例如".*ez"来识别一些西班牙裔姓氏,例如'rodriguez',但它并没有让我走得太远.

你有什么建议吗?由于我会在做出预测后手动修改所有关联,因此我不需要很高的准确性,但欢迎任何帮助或想法.

prediction

9
推荐指数
1
解决办法
2077
查看次数

automatically generate test cases in RUnit or testthat

How can I automatically generate test cases in RUnit?

For example, let's say I have a simple sum() function:

sum <- function(x, y) {
    return (x + y)
    }
Run Code Online (Sandbox Code Playgroud)

I would like to test this function on a series of different test cases:

test_cases <- c( c(2, 2, 4),
     c(3, 3, 6),
     c(0, 0, 0),
     c(-1, 2, 1)
     )
Run Code Online (Sandbox Code Playgroud)

The first two elements of each vector are x and y, and the third is the expected output of the sum(x,y) …

testing r runit testthat

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

如何使用 difflib.SequenceMatcher 获得多个匹配项?

我正在使用 difflib 来识别较长序列中短字符串的所有匹配项。然而,当有多个匹配项时,difflib 似乎只返回一个:

> sm = difflib.SequenceMatcher(None, a='ACT', b='ACTGACT')
> sm.get_matching_blocks()
[Match(a=0, b=0, size=3), Match(a=3, b=7, size=0)]
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

[Match(a=0, b=0, size=3), Match(a=0, b=4, size=3), Match(a=3, b=7, size=0)]
Run Code Online (Sandbox Code Playgroud)

实际上,字符串ACTGACT 在位置0 和4 处包含两个ACT 匹配项,大小均为3(加上字符串末尾的另一个大小为0 的匹配项)。

如何获得多个匹配项?我期待 difflib 返回两个位置。

python regex difflib

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

ggplot2:在同一页面中绘制多个直方图,但其中一个具有倒置坐标

我想根据相同的数据绘制两个或多个直方图,但反转一组的坐标,如下所示:

在此输入图像描述

(注:该图取自Grossman 等人 2011 年,A Composite of Multiple Signals Distinguishes Causal Variants in Regions of Positive Selection

例如,我们从 ggplot2 中获取钻石数据集:

> library(ggplot2)
> head(diamonds)
  carat       cut color clarity depth table price    x    y    z
1  0.23     Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21   Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23      Good     E     VS1  56.9    65   327 4.05 4.07 2.31
4  0.29   Premium     I     VS2  62.4    58   334 4.20 4.23 2.63 …
Run Code Online (Sandbox Code Playgroud)

r histogram ggplot2

4
推荐指数
1
解决办法
1862
查看次数

在Sparklyr中按组计算分位数

我在Spark中有一个数据框,并想按特定列分组后计算0.1分位数。

例如:

> library(sparklyr)
> library(tidyverse)
> con = spark_connect(....)

> diamonds_sdl = copy_to(con, diamonds)
> diamonds
# Source:   table<diamonds> [?? x 10]
# Database: spark_connection
   carat cut       color clarity depth table price     x     y     z
   <dbl> <chr>     <chr> <chr>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
 1 0.230 Ideal     E     SI2      61.5  55.0   326  3.95  3.98  2.43
 2 0.210 Premium   E     SI1      59.8  61.0   326  3.89  3.84  2.31
 3 0.230 Good      E     VS1      56.9  65.0   327  4.05  4.07  2.31
 4 …
Run Code Online (Sandbox Code Playgroud)

group-by r quantile apache-spark sparklyr

4
推荐指数
1
解决办法
961
查看次数