我有一个代码块,我在一个pthread(让我们调用这个线程a),我希望产生一个新的pthread(让我们调用这个线程b).线程b需要传递一个双端队列,我有以下代码:
void* process_thread_b(void* arg)
{
deque<string> *ptr = (deque<string>*)arg;
cout << "Size -" << ptr->size() << endl;
deque<string>::iterator it;
for(it = ptr->begin(); it != ptr->end(); it++)
{
cout <<(*it) << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是线程b's代码.它传递一个双端队列并正确打印出大小.我尝试打印出任何元素的那一刻,我得到:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abort (core dumped)
Run Code Online (Sandbox Code Playgroud)
当我产生pthread时,我使用下面的代码......
deque<string> myDeque;
// Add strings to deque here...
pthread_t dispatchCommands;
pthread_create(&dispatchCommands, NULL, &process_thread_b, (void*)&myDeque);
Run Code Online (Sandbox Code Playgroud)
底部代码发生在线程中a.为什么当我尝试打印出deque的一个元素时,我收到一个错误,但我可以得到它的大小?
有没有办法编写一个函数,其中一个参数指示要应用的函数?
例如,如果我有一个功能:
mf = function(data, option, level)
Run Code Online (Sandbox Code Playgroud)
在这里我想选项来告诉是否计算mean,median或sd数据集的?
有人可以解释为什么在下面的示例中,列名称why似乎仍然保留,x即使它已明确命名why并且可以这样调用但不是列zz?
df<-data.frame(x=1:5,y=1:5)
df$z<-"a"
df$zz<-df$x*df$y
df$why<-df[1]*df[2]
df
df["why"]
Run Code Online (Sandbox Code Playgroud) 我有以test500列命名的data.frame .我需要创建test1包含7列的data.frame test(它们的编号为1,2,52,121,123,344,401 等).我怎样才能轻松完成?(我的意思是)
我有一个数据集raw.data.2010,需要几个步骤与不同的动物物种进行子集化.我还需要在每个过滤过程后相应地命名它们.我写了一个简单的代码如下:
#Creating reproducible data######
site=rep(list("Q", "R", "S", "T"), each=500)
grid=sample(1:2, size=2000, replace=TRUE)
spp=rep(list("A", "B", "C", "D", "E"), each=400)
fate=sample(1:5, size=20000, replace=TRUE)
sex=rep(list("M","F"), each=2000)
weight=sample(85:140, size=2000, replace=TRUE)
raw.data=as.data.frame(cbind(site, grid, spp, fate, sex, weight))
### main codes#####
spp=c("A", "B", "C", "D", "E")
for (i in spp){
name=paste(i, "raw", sep=".", collapse="")
filter=paste("select",i, sep="", collapse="")
assign(filter, raw.data$spp==i)
assign(name, raw.data[get(filter),])
}
Run Code Online (Sandbox Code Playgroud)
我检查过滤器,他们没有问题.但是最后一行不起作用,所以我调用的所有子集化数据都返回了NA.哪里错了?谢谢.
编辑:嗨,谢谢大家的意见.我编辑了我的代码,所以它是可重复的.基本上我想首先过滤我raw.data的spp.然后,我可以继续按照加入更多的过滤器将它们分组site,grid,fate...等等.我需要能够单独访问过滤后的数据,以便我可以操作它们供以后使用,例如.计算不同性别或年龄组的体重和其他测量值.我希望能够打电话A.raw,A.Q.data后来.
因为我想分析不同级别的数据(例如人口级别,个人级别,站点/网格级别),并能够根据我的需要对其进行汇总/拆分.这就是这段代码的目的.希望我的解释不会让你感到困惑.
我正在尝试开发一个基于Backbone JS的应用程序.我想嵌入一个基于传单JS的OpenStreetMap地图,但我找不到任何教程.
我需要帮助使用Visual Basic应用程序在Unix服务器上执行命令.我正在使用Visual Basic Express 2010.
PS我可以使用systems.net.sockets但不能发送命令来连接到服务器.
我愿意尝试任何不同的方法,我只需要知道如何做到这一点.
我不明白来自库"lubridate"的"ymd"函数如何在R中工作.我正在尝试构建一个能够正确转换日期而无需指定格式的功能.我正在检查由于dmy(),mdy()和ymd()函数而发生的最小NA数.
所以ymd()有时会给出NA,有时不会给出相同的Date值.R中是否有其他功能或包,这将帮助我克服这个问题.
> data$DTTM[1:5]
[1] "4-Sep-06" "27-Oct-06" "8-Jan-07" "28-Jan-07" "5-Jan-07"
> ymd(data$DTTM[1])
[1] NA
Warning message:
All formats failed to parse. No formats found.
> ymd(data$DTTM[2])
[1] "2027-10-06 UTC"
> ymd(data$DTTM[3])
[1] NA
Warning message:
All formats failed to parse. No formats found.
> ymd(data$DTTM[4])
[1] "2028-01-07 UTC"
> ymd(data$DTTM[5])
[1] NA
Warning message:
All formats failed to parse. No formats found.
>
> ymd(data$DTTM[1:5])
[1] "2004-09-06 UTC" "2027-10-06 UTC" "2008-01-07 UTC" "2028-01-07 UTC"
[5] "2005-01-07 UTC"
Run Code Online (Sandbox Code Playgroud)
谢谢
下面的代码只返回结果:"d:/result.txt"中的"0 0".我已经显示了下面返回的同时错误.我的计划有什么问题?
for (i in 2:31)
{
if(i%%5=2)
{cat(i,1,"\n",append=TRUE,file="d:/result.txt")}
else{cat(0,0,"\n",append=TRUE,file="d:/result.txt")}
}
> for (i in 2:31)
+ {
+ if(i%%5=2){
Error: unexpected '=' in:
"{
if(i%%5="
> cat(i,1,"\n",append=TRUE,file="d:/result.txt")
Error in cat(i, 1, "\n", append = TRUE, file = "d:/result.txt") :
object 'i' not found
> }
Error: unexpected '}' in "}"
> else {
Error: unexpected 'else' in "else"
> cat(0,0,"\n",append=TRUE,file="d:/result.txt")
> }
Error: unexpected '}' in "}"
> }
Error: unexpected '}' in "}"
Run Code Online (Sandbox Code Playgroud) 我正在运行一个R代码(不是我的代码),用于读取目录并绘制图表:
library(ggplot2)
dat <- at <- read.table(file="User/alexanderzamani/Documents/results.txt",
sep = "\t", header= TRUE)
#let's just look at a single mutation rate
r <- dat[which(dat$u==0.00010),]
#now let's plot it out
p <- ggplot(r, aes(x=S, y=k, group=pN))
p + geom_line(aes(color=pN), size=2, alpha=0.5) + geom_point() +
xlab("Overlapping generations (proportion of offspring that survive)") +
ylab("substitution rate") +
scale_colour_gradient(name="Degree of\npopulationsize\nfluctuation")
Run Code Online (Sandbox Code Playgroud)
安装后ggplot2,我运行代码,我显示一个空白的石英窗口,这个错误:
Error in if (nrow(layer_data) == 0) return() : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
我没有R的经验,任何帮助将不胜感激.
- 编辑
这是我正在使用的上传.txt文件的链接 - http://txtup.co/NW6lU
我是世界上的新人R,并且有一个相当简单的问题,但它让我很烦恼.
我有一大堆数字:
abc=rnorm(100, mean=0, sd=1)
Run Code Online (Sandbox Code Playgroud)
我想知道这些数字中有多少是积极的.我试过了:
length(which(abc>0)
Run Code Online (Sandbox Code Playgroud)
但那没用.有什么建议?
我是R.的初学者.当我下载twitterR包时,我收到了一条错误信息
将软件包安装到'/home/xxx/R/x86_64-pc-linux-gnu-library/3.1'(未指定'lib')install.packages中的警告:软件包'twitterR'不可用(对于R版本3.1. 0)
laply 对于R是什么包的一部分?
我明白了:
"Error: could not find function "laply"".
Run Code Online (Sandbox Code Playgroud)
谢谢.