我在做数据分析并创建了一个包来存储我的护身符和数据,说明在这里.
我想设置一些可用于我所有包函数的变量.
这些变量定义:数据集的路径,测量特征(如探针位置),物理常数等.
我已经读过,存储这些变量的一种推荐方法是使用环境.
问题是,我在哪里放置创建环境的脚本?
我想把它放在onLoad方法中,以确保它在加载包时执行.
我正在尝试为链接任务创建API.
首先,我设计了一个定义任务的非常简单的界面:
public interface Task<U, V> {
U execute(V input);
}
Run Code Online (Sandbox Code Playgroud)
V输入类型和U任务的输出类型在哪里.
我要创建的是一个Chain链接列表的类Tasks.
例如,我想执行: Task1<TypeA, TypeB> -> Task2<TypeB, TypeC> -> Task3<TypeC, TypeD>
这个Chain课程因此是一个Task<TypeA, TypeD>.
所以我编写了这段代码,它不能编译:
public class Chain<U, V> implements Task<U, V> {
List<Task<?, ?>> taskList;
public Chain() {
taskList = new LinkedList<Task<?, ?>>();
}
@Override
public U execute(V input) {
V currentInput = input;
U output = null;
for (Task<?, ?> task : taskList) {
output = task.execute(currentInput); …Run Code Online (Sandbox Code Playgroud) 我有一个包含3个整数i,j和k的对象.
那些整数可以有一个减号(M),一个加号(P)或者为空(O).
因此,任何此类对象都可以归类为以下类别之一:MMM,MMP,MPM,MPP,PMM,PMP,PPM,PPP,OMM,OMP,OPM,OPP,MOM,MOP,POM,POP,MMO,MPO,PMO ,PPO,MOO,POO,OMO,OPO,OOM,OOP,OOO.
我想对这种类型的对象执行计算,这些对象将根据对象的类别而有所不同.
我的对象不仅包含这三个整数,还包含将在计算中使用的其他信息.
我的两个问题是:
如何从i,j和k值中推导出对象的类别?
如何实现正确算法的选择?
我做了一个天真的实现,使用枚举和很多if ... else,但我对结果不满意,尤其是if ... else部分.
任何更好,更面向对象的想法?
数据类:
public class Data {
private int i, j, k;
private double otherData;
private Category category;
public void init(int i, int j, int k) {
this.i = i;
this.j = j;
this.k = k;
if (i < 0) {
if (j < 0) {
if (k < 0) {
category = Category.MMM;
} else if (k > 0) {
category = Category.MMP;
} else//(k >= …Run Code Online (Sandbox Code Playgroud) 阅读此问题后,我尝试对数据框执行相同的操作:
x <- c(1,2,3,4)
y <- c(5,6,7,8)
my.df <- data.frame(x, y)
do.call("sprintf", c("%14.7E", my.df))
Run Code Online (Sandbox Code Playgroud)
但这仅适用于第一列:
[1] " 1.0000000E+00" " 2.0000000E+00" " 3.0000000E+00" " 4.0000000E+00"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
1.0000000E+00 5.0000000E+00
2.0000000E+00 6.0000000E+00
3.0000000E+00 7.0000000E+00
4.0000000E+00 8.0000000E+00
Run Code Online (Sandbox Code Playgroud)
因此,我可以将其写入将由fortran代码读取的文件中。
我有一个包含两列的数据框:
x <- c(1, 2, 3, 4, NA, 5, 6)
y <- c(1, 2, 4, 5, 0, 5, 6)
my.df <- data.frame(x, y)
Run Code Online (Sandbox Code Playgroud)
我想只保留x!= y的行.
我做的是这样的:
my.df <- subset(my.df, x != y)
Run Code Online (Sandbox Code Playgroud)
我的期望是:
x y
3 4
4 5
NA 0
Run Code Online (Sandbox Code Playgroud)
我得到的是
x y
3 4
4 5
Run Code Online (Sandbox Code Playgroud)
这是因为,通过一个奇怪的惯例,NA != 0是NA.
我真的想将NA保留在子集中,因为我正在寻找列之间的差异.
怎么做到这一点?
我有一个字符串向量,其中包含:
Number of source1.2_SPNB.txt
Number of source1.1_SPNB.txt
Number of source1.3_SPNB.txt
Run Code Online (Sandbox Code Playgroud)
我需要在新向量中提取“source1.1”、“source1.2”和“source1.3”。
在此之后,我尝试了:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector)
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
无效的正则表达式 '(?<=of )(.*)(?=_)',原因 '无效的正则表达式'
然后我尝试:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector, perl = TRUE)
Run Code Online (Sandbox Code Playgroud)
但它返回了完全相同的字符串向量。
我究竟做错了什么?
我有一个定义节点的类(一个有三个双坐标的点).
public class Node {
private final double x, y, z;
public Node() {
}
public Node(final double x, final double y, final double z) {
this.x = x;
this.y = y;
this.z = z;
}
public void setCoordinates(final double x, final double y, final double z) {
this.x = x;
this.y = y;
this.z = z;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要创建很多节点并给它们整数ID,但我必须避免重复.
创建节点的方法如下所示:
private Node vertex = new Node(0, 0, 0);
private final AtomicInteger nodeCounter = new AtomicInteger();
private final Map<Node, Integer> …Run Code Online (Sandbox Code Playgroud) 我有一个数值向量,说:
angles <- c(10.2, 20.3, 14.3, 18.4)
Run Code Online (Sandbox Code Playgroud)
我想在每个元素的末尾附加度数符号,以获得:
labels <- c("10.2°", "20.3°", "14.3°", "18.4°")
Run Code Online (Sandbox Code Playgroud)
我尝试使用bquote()函数但没有成功:
labels <- bquote(paste(.(angles) * degree))
Run Code Online (Sandbox Code Playgroud) 我想使用geom_text()函数在ggplot图上显示文本标签列表。
这些标签的位置存储在列表中。
使用以下代码时,仅出现第二个标签。
x <- seq(0, 10, by = 0.1)
y <- sin(x)
df <- data.frame(x, y)
g <- ggplot(data = df, aes(x, y)) + geom_line()
pos.x <- list(5, 6)
pos.y <- list(0, 0.5)
for (i in 1:2) {
g <- g + geom_text(aes(x = pos.x[[i]], y = pos.y[[i]], label = paste("Test", i)))
}
print(g)
Run Code Online (Sandbox Code Playgroud)
知道此代码有什么问题吗?
我想在我的情节上绘制几条垂直线,并为每个相应的 vline 绘制一个图例。
阅读这篇文章后,这是我实现的:
set.seed(99)
df.size <- 1e6
my.df <- data.frame(dist = rnorm(df.size, mean = 0, sd = 2))
library(ggplot2)
ggplot(my.df, aes(x=dist)) + geom_histogram(binwidth = 0.5)
vline1.threshold <- mean(my.df$dist)
vline2.threshold <- mean(my.df$dist) + 3*sd(my.df$dist)
Run Code Online (Sandbox Code Playgroud)
现在的情节:
g <- ggplot(my.df, aes(x = dist)) +
geom_histogram(binwidth = 0.5) +
geom_vline(aes(color = "vline1", xintercept = vline1.threshold)) +
geom_vline(aes(color = "vline2", xintercept = vline2.threshold)) +
scale_color_manual("Threshold", values = c(vline1 = "red", vline2 = "blue"), labels = c("Mean", "Mean + 3*SD"))
system.time(print(g))
Run Code Online (Sandbox Code Playgroud)
这很有效:
但它非常慢: …