哪种方法更好更快: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) 我试图使用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) 标准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) 我需要修改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()电话里面.
我可以用什么方法来预测一个人姓氏的国籍?
我有大量的作者文本和姓氏.我想确定哪些文本是由拉丁语发言人撰写的,哪些文本是由母语为英语的人撰写的,以便研究某一组的某些写作风格模式是否与另一组不同.
我已经查看谷歌和pubmed的姓氏数据库,但我找不到任何免费访问.另一种方法是使用一些正则表达式,例如".*ez"来识别一些西班牙裔姓氏,例如'rodriguez',但它并没有让我走得太远.
你有什么建议吗?由于我会在做出预测后手动修改所有关联,因此我不需要很高的准确性,但欢迎任何帮助或想法.
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) …
我正在使用 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 返回两个位置。
我想根据相同的数据绘制两个或多个直方图,但反转一组的坐标,如下所示:

例如,我们从 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) 我在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) r ×6
ggplot2 ×2
apache-spark ×1
difflib ×1
dplyr ×1
group-by ×1
histogram ×1
if-statement ×1
lm ×1
performance ×1
php ×1
prediction ×1
python ×1
quantile ×1
regex ×1
rmysql ×1
runit ×1
sparklyr ×1
ssh-tunnel ×1
testing ×1
testthat ×1