小编LGT*_*der的帖子

预处理后gcc可以输出C代码吗?

我正在使用一个开源库,它似乎有很多预处理指令来支持除C之外的许多语言.这样我就可以研究库正在做什么了我想看看我在预处理后编译的C代码,更像是我写的东西.

gcc(或Linux中常用的任何其他工具)可以读取这个库,但输出的C代码将预处理转换为任何东西并且人类也可以读取吗?

c preprocessor c-preprocessor preprocessor-directive

90
推荐指数
6
解决办法
10万
查看次数

找到最大值5,小于1,最低5个值

我在R中有一个大的相关矩阵结果 - 现在大约有30个项目彼此相关 - 所以这个数组有大约10,000个单元格.我想找到最大的5个和最小的5个结果.我怎样才能做到这一点?

这是一个非常小的部分 - 左上角 - 看起来像:

               PL1         V3          V4         V5
PL1     1.00000000 0.19905701 -0.02994034 -0.1533846
V3      0.19905701 1.00000000  0.09036472  0.1306054
V4     -0.02994034 0.09036472  1.00000000  0.1848030
V5     -0.15338465 0.13060539  0.18480296  1.0000000
Run Code Online (Sandbox Code Playgroud)

表中的值总是在1和-1之间,如果有帮助,作为相关矩阵,对角线上方的上半部分是对角线下方的下半部分的副本.

我需要最小的5小于1和最负5包括-1,如果它存在.

提前致谢.

r

4
推荐指数
1
解决办法
4685
查看次数

创建新的滞后data.frame列

我不了解如何在data.frame中创建一个新的"滞后"列.我的当前数据是在数据末尾收集的.我需要发送一个程序来假设它是在早上收集的第一件事,所以我需要将第2列滞后1行.我写的代码只返回相同的数据.

我该怎么做呢?

谢谢.

D8 = structure(list(Date = structure(c(14396, 14397, 14398, 14399, 
14400, 14403, 14404, 14405, 14406,
14407, 14410, 14411, 14412,  14413,
14414, 14417, 14418, 14419, 14420,
14421, 14424, 14425,  14426, 14427,
14428, 14431, 14432, 14433, 14434,
14435), class = "Date"), 
    PL8 = c(0, 0, 0, 0, 76, 0, -334, -974, -104, 356, 378, -1102, 
    -434, 266, -434, 444, 464, 0, 486, 406, -224, -214, 0, -4, 
    0, -188, 356, 322, -484, 436)), .Names = c("Date", "PL8"), row.names =
c(NA,  30L), …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
1
解决办法
1万
查看次数

让'模型'脱离地球

抱歉糟糕的头衔.不知道我应该怎么说.

我正在玩地球包,看看使用或多或少的标准指标回归神经网络信号.数据文件是1000行,当前有187列(186指标结果),最后一列中有我的目标变量.我编写的代码非常简单,现在省略了任何样本内与样本外的问题,但至少它似乎起作用:

library(earth)
MyData = read.csv("C:\\Users\\TSIT\\\\GS-Pass12.csv",header=TRUE)
x=data.frame(MyData[,1:ncol(MyData)-1])
y=MyData[,ncol(MyData)]

a = earth(x,y,nprune=5)
summary(a, digits = 2, style = "pmax")
Run Code Online (Sandbox Code Playgroud)

摘要的输出看起来很合理:

summary(a, digits = 2, style = "pmax")
Call: earth(x=x, y=y, nprune=5)

y =  1.2
  - 31 * pmax(0, Percent.Difference.from.Moving.Average..C..10. -   0.096)    
  + 10 * pmax(0, 0.096 - Percent.Difference.from.Moving.Average..C..10.)    
  + 25 * pmax(0, Percent.Difference.from.Moving.Average..C..15. -  0.14) 
  - 16 * pmax(0,  0.14 - Percent.Difference.from.Moving.Average..C..15.) 

Selected 5 of 116 terms, and 2 of 185 predictors  Importance:
Percent.Difference.from.Moving.Average..C..15.,
Value.Oscillator..C..8..26..1.-unused, ... Number of terms at each …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
1
解决办法
3531
查看次数

"订单"的输出对我来说没有意义

无论出于何种原因,我无法理解函数"订单"实际上在做什么.在下面的代码中,我展示了一些数据,什么顺序返回,然后我天真地想到的顺序应该返回但不会.对我而言,似乎列3,4,5,6和7是不正确的,但我怀疑这只是订单的文档没有通过我的愚蠢的头.

x1 = c(1,1,3:1,1:4,3)
Ordered = order(x1)
MarkThinks = c(1,2,7,5,3,4,6,8,10,9)
Res1 = rbind(x1, Ordered, MarkThinks)

Res1
Run Code Online (Sandbox Code Playgroud)

在这里运行我得到:

> Res1
           [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x1            1    1    3    2    1    1    2    3    4     3
Ordered       1    2    5    6    4    7    3    8   10     9
MarkThinks    1    2    7    5    3    4    6    8   10     9
Run Code Online (Sandbox Code Playgroud)

在我看来,排序意味着第1行中的4个1将在其位置产生1,2,3,4,其次是2个2产生5,6,3个3的7,8,9和1 4产生10在我的申请中,如何打破关系并不重要,所以我只是从左到右,但任何关系的顺序都是可以接受的.

假设订单工作正常而不是我需要的东西(即 - 我还没想到的一些选项)我怎样才能得到我在第3行寻找的东西?

r

3
推荐指数
1
解决办法
238
查看次数

选择时间序列的一部分

在下面的代码中,我创建了一个简单的数据系列,一个时间向量,然后是一个时间序列.绘制它们都没有问题.(它们在同一个图上并不重要.)我无法弄清楚的是如何将一部分时间序列子集化,如上一个失败的命令所示:

>> timeseriesTest
Error using timeseries/plot (line 27)
The plot method can only be used for a single timeseries object

Error in timeseriesTest (line 14)
plot(ts(25:end));

>> 
Run Code Online (Sandbox Code Playgroud)

如何提取时间序列中的最后25个(在本例中)值?重要提示:虽然在下面的代码中不是这样,但我的时间序列有每日或每周时间戳,我确实需要保留它.即:

NewData = ts.data 
Run Code Online (Sandbox Code Playgroud)

...这不是一个好的答案,除非它是获得新的提取时间序列的唯一方法.

t=[1:50];
d=sin(2*pi*t/20);

ts = timeseries(2*d, t);

%plot data and timeseries
plot(d);
hold on;
plot(ts);

figure();
plot(d(25:end));
hold on;
plot(ts(25:end));
Run Code Online (Sandbox Code Playgroud)

matlab time-series

3
推荐指数
1
解决办法
3991
查看次数

C 符号名称“rs_createGD”不在加载表中

Gentoo 上 R & RStudio 的最新更新导致我运行了很长时间的许多程序都出现了这个问题。

M <- cor(mtcars)
##  different color series
col1 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","white",
                           "cyan", "#007FFF", "blue","#00007F"))
col2 <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7",
                           "#FFFFFF", "#D1E5F0", "#92C5DE", "#4393C3", "#2166AC", "#053061"))
col3 <- colorRampPalette(c("red", "white", "blue"))
col4 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","#7FFF7F",
                           "cyan", "#007FFF", "blue","#00007F"))
wb <- c("white","black")


par(ask = TRUE)


## different color scale and methods to display corr-matrix
corrplot(M, method = "number", col = "black", cl.pos = "n")
Run Code Online (Sandbox Code Playgroud)

结果是:

par(ask = TRUE) .Call("rs_createGD") 中的错误:C 符号名称“rs_createGD”不在加载表中

corrplot(M, method = "number", col …

r

3
推荐指数
1
解决办法
1万
查看次数

如何控制显示哪些监视器图?

我有一个运行 MATLAB 的 3 显示器 Gentoo Linux 系统。MATLAB 在中央显示器上运行。我需要 MATLAB 在左侧监视器上生成绘图,但它总是在右侧监视器上绘图。

我相信这至少部分是由于我对显示器进行物理排列的非标准方式造成的 - 基本上是 2,3,1:

>> get(0,'MonitorPositions')

ans =

           1           1        1920        1080
       -3839           1        1920        1080
       -1919           1        1920        1080
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在 MATLAB 中将其默认控制?

matlab multiple-monitors matlab-figure

2
推荐指数
1
解决办法
660
查看次数

R中的简明状态机设计

我正在寻找一种更多矩阵/应用导向的方式来编写R中的状态机与我在这里用for循环和一堆if语句完成的操作?这是否可以在R中您需要知道机器的先前状态?

当A1和A2均为1时,以下机器启用;如果B1和B2均为1,则武装撤防.通常,A1,A2,B1和B1之间没有已知的关系.如果没有满足任何条件,则保持先前的状态.

是否有可能在R中进行这种计算而没有for循环逐步遍历矩阵?如果是这样,请创建一些计算S1a的代码.谢谢.

[[编辑简化]]

Mach1 = matrix(data=0, nrow = 24, ncol = 6)
colnames(Mach1)=c("A1","A2","B1","B2","S1","S1a")
Mach1[,"A1"] <- c(0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0)
Mach1[,"A2"] <- c(0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0)

Mach1[,"B1"] <- c(0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0)
Mach1[,"B2"] <- c(0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1)

for (i in 2:nrow(Mach1)){
  Prev = Mach1[(i-1),"S1"]
  Prev = ifelse(is.na(Prev), 0, Prev)
  Arm = ((Mach1[i,"A1"] ==1) && (Mach1[i,"A2"] == 1))
  Disarm = ((Mach1[i,"B1"] == 1) && (Mach1[i,"B2"] == 1))

  if ((Prev == 0) && (Arm)){ #Turn on
    Mach1[i,"S1"] <- 1
    print(paste(i, "Armed"))
  } else  if ((Prev == 1) && (Disarm)){ #Turn off
    Mach1[i,"S1"] <- …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
793
查看次数

分配值0 + 0i的复数数组?

这个命令

Y1 = repmat(0+0i, 10, 1);
Run Code Online (Sandbox Code Playgroud)

似乎创建了一个双精度数组,而这个命令

Y2 = repmat(0.0001+0.0001i, 10, 1);
Run Code Online (Sandbox Code Playgroud)

正确创建一个复数double的数组.

在MatLab中是否有一种方法可以分配以供以后使用大小为零的复数双精度数组,或者我需要以非常小的幅度开始,如上所述?

matlab

1
推荐指数
1
解决办法
139
查看次数