Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中实现例程自动化_R_Optimization - Fatal编程技术网

在R中实现例程自动化

在R中实现例程自动化,r,optimization,R,Optimization,鉴于我的数据(见下文),我正在使用几个“length”+“which”语句(见下文)来探索我的数据 Q1.是否有一种有效的代码来自动化而不是使用这么多行代码 Q2.我可以将所有“长度”+“哪些”陈述的答案汇总到一个表格中吗?(例如,对于答案为9的第一个“长度”+“哪个”语句,表可以说“第一象限”,并且在9旁边或下面) 以下是我的数据和我创建的长度+which”语句: x <- c(2,1,5,4,5,8,6,6,4,1,2,2,2,5,9,5,4,3,2,3,1,3,1,7,3,2,2,9

鉴于我的数据(见下文),我正在使用几个“length”+“which”语句(见下文)来探索我的数据

Q1.是否有一种有效的代码来自动化而不是使用这么多行代码

Q2.我可以将所有“长度”+“哪些”陈述的答案汇总到一个表格中吗?(例如,对于答案为9的第一个“长度”+“哪个”语句,表可以说“第一象限”,并且在9旁边或下面)

以下是我的数据和我创建的长度+which”语句:

x <- c(2,1,5,4,5,8,6,6,4,1,2,2,2,5,9,5,4,3,2,3,1,3,1,7,3,2,2,9,7,7,9,8,8,6,4,6,7,2,1,4,3,9)
y <- c(1,2,2,8,7,4,6,7,5,5,2,9,3,9,1,5,7,1,8,6,8,4,9,2,7,5,7,6,3,8,3,3,7,8,3,4,4,4,3,6,5,4)

## HERE is my "length" + "which" statements:

length(x[which(x < 5 & y <5)]) ## 1st quadrant datapoints (Left Bottom)
length(x[which(x < 5 & y >5)]) ## 2rd quadrant   "
length(x[which(x > 5 & y >5)]) ## 3rd quadrant   "
length(x[which(x > 5 & y <5)]) ## 4rd quadrant datapoints (Right Bottom)

length(x[which(x < 5)]) ## 1st left half
length(x[which(x > 5)]) ## 2nd right half
length(x[which(y < 5)]) ## 1st Bottom half
length(x[which(y > 5)]) ## 2nd Top half

length(x[which(x==5)]) ## Balanced Scope
length(x[which(y==5)]) ## Balanced Technicality
length(x[which(x==5 & y==5)]) ## Equal Scope and Technicality

length(x[which(y==5)]) ## How many of Xs have a Y of 5
length(y[which(x==5)]) ## How many of Ys have a X of 5
x5&y5)]###右下半场
长度(x[其中(y<5)])35;#第一个下半部分
长度(x[哪个(y>5)])35;##第二上半部分
长度(x[其中(x==5)]###平衡范围
长度(x[其中(y==5)]###平衡的技术性
长度(x[其中(x==5&y==5)]###范围和技术性相等
长度(x[哪个(y==5)]##有多少个x的y为5
长度(y[哪个(x==5)]##有多少y的x为5

如果您只想用自己的描述创建一个漂亮的表,那么最好的方法就是简单地使用“多”行

names=c(“第一象限”、“第二象限”、“第三象限”、“第四象限”)
数字=c(长度(x[x<5&y 5]),长度(x[x>5&y>5]),12345)
新表=数据帧(名称、数字)

首先,我想指出,
长度(x[哪个(逻辑向量)])
就是
和(逻辑向量)
,如果这个向量的长度不超过
x
的长度(在你的例子中,它们总是相同的长度)

但我将建议一种不同的方法,而不是总结逻辑向量。x和y表示平面中点的坐标,因此将它们绑定到一个数据帧是很自然的,如下所示:

d <- data.frame(x, y)
因此,为了解释:如果一个点,例如有
sx=-1
sy=-1
,这意味着对于这个点
x<5
y<5
,我们可以只知道
sx
sy
来确定象限

现在我们需要创建一个字典,它可以通过
sx
sy
告诉我们象限是什么。这很简单:

library(tibble)
quadrant <- tribble(
    ~sx, ~sy, ~quadrant,
     -1,  -1,         1,
     -1,   1,         2,
      1,   1,         3,
      1,  -1,         4
)
最后,我们用象限来得到总结

count(d, quadrant)

# A tibble: 5 × 2
  quadrant     n
     <dbl> <int>
1        1     9
2        2    10
3        3     6
4        4     9
5       NA     8
计数(d,象限)
#一个tibble:5×2
象限n
1        1     9
2        2    10
3        3     6
4        4     9
5 NA 8

查看
?cut
?table
…此处不需要任何
which()
语句。作为“首次学习子集时,一个常见错误是使用
x[which(y)]
而不是
x[y]
”@RHertel,这取决于您希望如何处理NA值。如果使用的
x[y]
y
包含NA值,您将在该位置插入NA值。如果要避免这种情况,可以使用
isTRUE
which
。与定义相同子集的全长逻辑向量相比,我还使用
来存储一个小子集并节省相当多的内存。
library(tibble)
quadrant <- tribble(
    ~sx, ~sy, ~quadrant,
     -1,  -1,         1,
     -1,   1,         2,
      1,   1,         3,
      1,  -1,         4
)
d <- merge(d, quadrant, all.x = T)
count(d, quadrant)

# A tibble: 5 × 2
  quadrant     n
     <dbl> <int>
1        1     9
2        2    10
3        3     6
4        4     9
5       NA     8