我需要确定数组中是否存在值.
我使用以下功能:
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] == obj) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
上面的函数总是返回false.
数组值和函数调用如下:
arrValues = ["Sam","Great", "Sample", "High"]
alert(arrValues.contains("Sam"));
Run Code Online (Sandbox Code Playgroud) 每当我想在R中做一些"map"py时,我通常会尝试使用一个函数 apply家族中.
但是,我从来没有完全理解它们之间的区别 - 如何{ sapply,lapply等}将函数应用于输入/分组输入,输出将是什么样的,甚至输入可以是什么 - 所以我经常只要仔细检查它们,直到我得到我想要的东西.
有人可以解释如何使用哪一个?
我当前(可能不正确/不完整)的理解是......
sapply(vec, f):输入是一个向量.output是一个向量/矩阵,其中element i是f(vec[i])一个矩阵,如果f有一个多元素输出
lapply(vec, f):相同sapply,但输出是一个列表?
apply(matrix, 1/2, f):输入是一个矩阵.output是一个向量,其中element i是f(矩阵的row/col i)tapply(vector, grouping, f):output是一个矩阵/数组,其中矩阵/数组中的元素是向量f分组g的值,和g被推送到行/列名称by(dataframe, grouping, f):让我们g成为一个分组.适用f于组/数据框的每一列.漂亮打印分组和f每列的值.aggregate(matrix, grouping, f):类似于by,但不是将输出打印得很漂亮,而是将所有内容都粘贴到数据帧中.侧问题:我还没有学会plyr或重塑-将plyr或reshape更换所有这些完全?
如何连接(合并,组合)两个值?例如,我有:
tmp = cbind("GAD", "AB")
tmp
# [,1] [,2]
# [1,] "GAD" "AB"
Run Code Online (Sandbox Code Playgroud)
我的目标是将"tmp"中的两个值连接到一个字符串:
tmp_new = "GAD,AB"
Run Code Online (Sandbox Code Playgroud)
哪个功能可以为我做到这一点?
我在data.frame中遇到了前导和尾随空格的麻烦.例如,我想看看在特定row的data.frame基础上有一定的条件:
> myDummy[myDummy$country == c("Austria"),c(1,2,3:7,19)]
[1] codeHelper country dummyLI dummyLMI dummyUMI
[6] dummyHInonOECD dummyHIOECD dummyOECD
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我没有得到预期的产量,因为奥地利显然存在于我的国家data.frame.在查看我的代码历史并试图弄清楚出了什么问题后,我尝试了:
> myDummy[myDummy$country == c("Austria "),c(1,2,3:7,19)]
codeHelper country dummyLI dummyLMI dummyUMI dummyHInonOECD dummyHIOECD
18 AUT Austria 0 0 0 0 1
dummyOECD
18 1
Run Code Online (Sandbox Code Playgroud)
我在命令中改变的是奥地利之后的另一个空格.
显然会出现更烦人的问题.例如,当我想根据国家/地区列合并两个帧时.一个data.frame用于"Austria "另一个帧"Austria".匹配不起作用.
到目前为止,我曾经写过一个Perl删除空格的简单脚本,但如果我可以在R里面以某种方式做到这一点会很好.
我绘制以下内容:
library(ggplot2)
carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)
ggplot(vegLengths, aes(length, fill = veg)) +
geom_density(alpha = 0.2)
Run Code Online (Sandbox Code Playgroud)
现在说我只是想绘制之间的区域x=-5000来5000,而不是整个范围.
我怎样才能做到这一点?
如何更改此输入(使用序列:time,in,out,files):
Time In Out Files
1 2 3 4
2 3 4 5
Run Code Online (Sandbox Code Playgroud)
到这个输出(顺序:时间,输出,文件)?
Time Out In Files
1 3 2 4
2 4 3 5
Run Code Online (Sandbox Code Playgroud)
这是虚拟R数据:
table <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))
table
## Time In Out Files
##1 1 2 3 4
##2 2 3 4 5
Run Code Online (Sandbox Code Playgroud) 我很想知道R是否可以使用它的eval()功能来执行例如字符串提供的计算.
这是一个常见的情况:
eval("5+5")
Run Code Online (Sandbox Code Playgroud)
但是,而不是10我得到:
[1] "5+5"
Run Code Online (Sandbox Code Playgroud)
有解决方案吗
如果我有一个字符类型的向量,我如何将值连接成字符串?这是我用paste()做的方法:
sdata = c('a', 'b', 'c')
paste(sdata[1], sdata[2], sdata[3], sep ='')
Run Code Online (Sandbox Code Playgroud)
屈服"abc".
但是,当然,这只有在我提前了解sdata的长度时才有效.
我使用了以下ggplot命令:
ggplot(survey, aes(x = age)) + stat_bin(aes(n = nrow(h3), y = ..count.. / n), binwidth = 10)
+ scale_y_continuous(formatter = "percent", breaks = c(0, 0.1, 0.2))
+ facet_grid(hospital ~ .)
+ theme(panel.background = theme_blank())
Run Code Online (Sandbox Code Playgroud)
生产

我想将facet标签更改为更短的标签(如Hosp 1,Hosp 2 ......),因为它们现在太长并且看起来很狭窄(增加图形的高度不是一个选项,它需要文档中的空间太大).我查看了facet_grid帮助页面,但无法弄清楚如何.