我有一个NSDictionary对象,其中包含大量自定义对象.对象将是B类或C类,它们都从A类继承.如果对象是B类,它们将有一个内部标志(kindOfCIsh),用于将来的分组.
在程序的不同时间,如何获得包含这些对象的不同分组的NSDictionary(或NSArray)?在一种情况下,我将需要所有B,但另一次我将需要所有C对象,以及满足(kindOfCIsh == true)的B对象.
有没有一种简单的方法来访问这些子集?也许使用过滤谓词?当然,我可以遍历整个字典并手动构建所需的子集,但我感觉有更好的方法.
任何帮助表示赞赏.
我想检查一个数组是另一个数组的子集.
该程序打印错误,但我希望是真的.为什么不包含所有返回的真实?
int[] subset;
subset = new int[3];
subset[0]=10;
subset[1]=20;
subset[2]=30;
int[] superset;
superset = new int[5];
superset[0]=10;
superset[1]=20;
superset[2]=30;
superset[3]=40;
superset[4]=60;
HashSet sublist = new HashSet(Arrays.asList(subset));
HashSet suplist = new HashSet(Arrays.asList(superset));
boolean isSubset = sublist.containsAll(Arrays.asList(suplist));
System.out.println(isSubset);
Run Code Online (Sandbox Code Playgroud) 有没有办法让下面的R代码运行得更快(即矢量化以避免使用for循环)?
我的例子包含两个数据帧.首先是尺寸n1*p.其中一列包含名称.第二数据帧是列向量(n2*1).它也包含名称.我想保留第一个数据帧的所有行,其中第二个数据帧的列向量中的某些名称部分出现在相应的第一个数据帧中.抱歉残酷的解释.
示例(数据框1):
x y
Doggy 1
Hello 2
Hi Dog 3
Zebra 4
Run Code Online (Sandbox Code Playgroud)
示例(数据框2)
z
Hello
Dog
Run Code Online (Sandbox Code Playgroud)
所以在上面的例子中我想保留1,2,3行而不是4.因为"Dog"出现在"Doggy"和"Hi Dog"中."Hello"出现在"Hello"中.排除第四行,因为"Zebra"中没有出现"Hello"或"Dog"的部分.
下面是我执行此操作的R代码...运行正常.但是,对于我的真正任务.数据帧1有100万行,数据帧2有50个要匹配的项目.所以运行得很慢.任何关于如何加快这一点的建议都值得赞赏.
x <- c("Doggy", "Hello", "Hi Dog", "Zebra")
y <- 1:4
dat <- as.data.frame(cbind(x,y))
names(dat) <- c("x","y")
z <- as.data.frame(c("Hello", "Dog"))
names(z) <- c("z")
dat$flag <- NA
for(j in 1:length(z$z)){
for(i in 1:dim(dat)[1]){
if ( is.na(dat$flag[i])==TRUE ) {
dat$flag[i] <- length(grep(paste(z[j,1]), dat[i,1], perl=TRUE, value=TRUE))
} else {
if (dat$flag[i]==0) {
dat$flag[i] <- length(grep(paste(z[j,1]), dat[i,1], perl=TRUE, value=TRUE))
} else {
if …
Run Code Online (Sandbox Code Playgroud) 我正在研究一些代码,我发现了一些特殊的东西.当我在某些面板数据的子集上运行LM时,我可以正常工作,如下所示:
library('plm')
data(Cigar)
lm(log(price) ~ log(pop) + log(ndi), data=Cigar, subset=Cigar$state==1)
Call:
lm(formula = log(price) ~ log(pop) + log(ndi), data = Cigar,
subset = Cigar$state == 1)
Coefficients:
(Intercept) log(pop) log(ndi)
-26.4919 3.2749 0.4265
Run Code Online (Sandbox Code Playgroud)
但当我尝试将其包装在一个函数中时,我得到:
myfunction <- function(formula, data, subset){
return(lm(formula, data, subset))
}
myfunction(formula = log(price) ~ log(pop) + log(ndi), data = Cigar, subset = Cigar$state==1)
Error in xj[i] : invalid subscript type 'closure'
Run Code Online (Sandbox Code Playgroud)
我真的不明白这里发生了什么,但它打破了我写的其他代码,所以我想知道.
在笔记本电脑上运行Shiny应用程序时出现此错误。在我使用library(git2r)添加一行代码之前,应用程序正常运行。在我的代码下面。
有人可以协助吗?谢谢。
用户界面
league_desc <- c("Premier League","Serie A","Bundesliga","La Liga")
shinyUI(
fluidPage(
headerPanel(h1('Football Statistics', align = "center"),
h2('Data on the 4 main european football leagues. Period 2011 - 2015', align = "center")),
sidebarPanel(
h4('Selection Parameters', align = "center"),
Run Code Online (Sandbox Code Playgroud)
这是我的ui.R文件的初始部分。请注意,即使我没有应用特定的格式设置选项(我也没有“ www”文件夹或“ bootstrap.css”文件),我仍在使用fluidPage命令。
library(devtools)
library(git2r)
library(shiny)
library(rCharts)
library(dplyr)
library(rjson)
library(rNVD3)
league_desc <- c("Premier League","Serie A","Bundesliga","La Liga")
shinyUI(
fluidPage(
headerPanel(h1('Football Statistics', align = "center"),
h2('Data on the 4 main european football leagues. Period 2011 - 2015', align = "center")),
sidebarPanel(
h4('Selection Parameters', …
Run Code Online (Sandbox Code Playgroud) 我想df1
基于超出特定数字区间的值的子集df2
.
我的意见df1
和df2
:
df1 <- 'name sam1 sam2 sam3
AZ1 2.65 2.56 2.65
AX1 2.22 2.41 2.85
AX2 2.45 2.45 2.85'
df1 <- read.table(text=df1, header=T)
df2 <- 'name sam1 sam2 sam3
AZ1 1 0 1
AX1 0.75 0.55 1
AX2 0 0 0.62'
df2 <- read.table(text=df2, header=T)
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码将其子集化但未成功:
out <- df1[if(df2 >= 0.90) |if(df2 <= 0.10) | if(df2 <= 0.60 && df2 >= 0.40)]
Run Code Online (Sandbox Code Playgroud)
我试图仅将df1
具有高于0.90 或低于0.1 或 0.4到0.6之间的值的单元进行子集(反之:NA到x
间隔:0.40> …
我想对我的数据框进行子集化,以便仅保留在不同日期有3个或更多观察值的组.我想摆脱少于3次观察的群体,或者他们所拥有的观察不是来自3个不同的日子.
这是一个示例数据集:
Group Day
1 1
1 3
1 5
1 5
2 2
2 2
2 4
2 4
3 1
3 2
3 3
4 1
4 5
Run Code Online (Sandbox Code Playgroud)
因此,对于上面的示例,将保留组1和组3,并且将从数据帧中移除组2和组4.
我希望这是有道理的,我想解决方案将非常简单,但我无法解决它(我对R很新,并且不会很快就提出这样的解决方案).我想也许diff功能可以派上用场,但是没有进一步发展,我没有任何运气在SO和其他网站上搜索现有问题以获得答案.
非常感谢你提前!
我有b
水桶0 .... b-1和m
苹果0 .... m-1.在开始时,所有苹果都放在桶0中.
然后运行一些分析会导致苹果在桶之间移动.我已经通过使用2D列表(作为存储桶)实现了这一点,其中只要需要在存储桶之间移动苹果ID就会将其删除并附加.然而,对于我的分析来说,这是非常低效的,因为这些运动大约是数百万或数十亿.所以,我想知道是否有更好的解决方案来实现这样的结构?
顺便说一下,选择标题,因为这非常类似于设置问题的分区,其中没有成员可以放置在多于1个子集中.这里还有一个带有4个苹果和3个桶的示例,以使其更清晰:
time 0:
a=[[0,1,2,3],[],[]]
time 1: (say apple 3 needs to be moved to bucket 2)
a=[[0,1,2],[],[3]]
Run Code Online (Sandbox Code Playgroud) 我在R中创建了以下数据帧
df<-data.frame("ID"=c("A", "A", "A", "B", "B", "B"),"II"=c(NA, NA,
NA,1,2,3),"JJ"=c(1,2,3, NA, NA, NA), 'KK'=c(1,2,NA, NA, 5,6))
Run Code Online (Sandbox Code Playgroud)
生成的数据帧如下
ID II JJ KK
A NA 1 1
A NA 2 2
A NA 3 NA
B 1 NA NA
B 2 NA 5
B 3 NA 6
Run Code Online (Sandbox Code Playgroud)
我希望通过ID值对数据帧进行子集化,并将仅包含NA值的所有列替换为999.结果应如下所示
ID II JJ KK
A 999 1 1
A 999 2 2
A 999 3 NA
B 1 999 NA
B 2 999 5
B 3 999 6
Run Code Online (Sandbox Code Playgroud)
我试过这段代码
library(dplyr)
df%>%
group_by(ID)%>%
select(II, JJ,KK)%>%
mutate_if(df[, …
Run Code Online (Sandbox Code Playgroud) 我想用来根据相同数据设置2个向量子集replace=TRUE
。
即使两个向量都可以包含相同的值,但它们在相同的索引位置也不能相同。
例如:
> set.seed(1)
> a <- sample(15, 10, replace=T)
> b <- sample(15, 10, replace=T)
> a
[1] 4 6 9 14 4 14 15 10 10 1
> b
[1] 4 3 11 6 12 8 11 15 6 12
> a==b
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
在这种情况下,向量a
和b
在索引1处包含相同的值(值== 4),这对我来说是错误的。
有简单的方法可以纠正此问题吗?
并且可以在subset
台阶上完成吗?
或者我应该经过一个循环检查逐个元素,如果值相同,进行其他选择的b[i]
,并再次检查,如果它是不相同的循环往复?
非常感谢!