Tag: 经验

ElasticSearch问题汇聚

es只允许本地访问

1
2
sudo iptables -I INPUT -p tcp --dport 9200 -j DROP
sudo iptables -I INPUT -s 127.0.0.1 -p tcp --dport 9200 -j ACCEPT

部署集群时出现:No route to host

iptables的问题,清空里面的规则,关闭。

R对数组指定下标顺序输出

问题

1
2
3
4
> table(week.data['星期'])
星期二 星期六 星期日 星期三 星期四 星期五 星期一
34 46 37 55 40 46 65

table函数可以统计各个值的频度,但是输出的顺序却不是我们所期待的(期待的顺序是从星期一到星期日)。特别是使用barplot生成柱状图时,如果不按顺序,那肯定是不行的。

解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CaiSortByFields <- function(p.arr, p.fields) {
# 把数组按照指定顺序输出
#
# Args:
# p.arr 数组数据
# p.fields 指定顺序
# Returns:
# array
tmp <- array()
for (i in p.fields) {
tmp[i] <- p.arr[i]
}
# 去掉缺失值
tmp[!is.na(tmp)]
}

这个方式比较曲折,应该有更直接的方式的。

R语言的小技巧

ifelse和if … else …不同

认为相同,主要是受到之前经验的影响,不过这里的ifelse是向量化的运算,返回值的长度会和test的长度一致。可以看ifelse的源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function (test, yes, no)
{
if (is.atomic(test))
storage.mode(test) <- "logical"
else test <- if (isS4(test))
as(test, "logical")
else as.logical(test)
ans <- test
ok <- !(nas <- is.na(test))
if (any(test[ok]))
ans[test & ok] <- rep(yes, length.out = length(ans))[test &
ok]
if (any(!test[ok]))
ans[!test & ok] <- rep(no, length.out = length(ans))[!test &
ok]
ans[nas] <- NA
ans
}
1
2
> ifelse(c(T, F, T), c(1,2), c(5,6)) # 长度不够,则会自动补充
[1] 1 6 1

install RCurld的问题

在ubuntu12.04上安装:

1
install.packages("RCurl")

提示:

1
2
3
checking for curl-config... no
Cannot find curl-config
ERROR: configuration failed for package ‘RCurl’

解决:

1
sudo apt-get install libcurl4-gnutls-dev

附: http://cos.name/cn/topic/108303