Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
将x[0]转换为0,而不是R中的数字(0)_R - Fatal编程技术网

将x[0]转换为0,而不是R中的数字(0)

将x[0]转换为0,而不是R中的数字(0),r,R,我正在尝试将x[0]转换为0,而不是R中的数字(0) 我试图做的是将这行代码放入循环中: dx <- x$data[i] - x$data[i - 1] dx以下是一些方法。我们首先定义输入x # test input x <- data.frame(data = 1:3) nr <- nrow(x) # use if for(i in 1:nr) { dx <- data[i] - (if (i == 1) 0 else x$data[i-1]) print

我正在尝试将x[0]转换为0,而不是R中的数字(0)

我试图做的是将这行代码放入循环中:

dx <- x$data[i] - x$data[i - 1]

dx以下是一些方法。我们首先定义输入
x

# test input
x <- data.frame(data = 1:3)
nr <- nrow(x)

# use if
for(i in 1:nr) {
  dx <- data[i] - (if (i == 1) 0 else x$data[i-1])
  print(dx)
}
或者使用x$data[0]是零长度的事实,因此
c(x$data[0],0)
等于0:

for(i in 1:nr) {
  dx <- x$data[i] - c(x$data[i-1], 0)[1]
  print(dx)
}
或者,请注意,
dx
值可以表示为向量

c(x$data[1], diff(x$data))


还请注意,
1:nr
仅在nr>=1时按预期工作。要能够处理边缘情况nr=0,请使用
seq_len(nr)
代替
1:nr
。也可以使用
seq(2,length=nr-1)
来处理类似的边情况,而不是
2:nr

您是否尝试过从1开始循环,因为在R中第一个元素是x[1]而不是x[0]?R使用基于1的索引而不是基于0的索引。不能定义第0个元素。相反,您可以使用
if/else
ifelse()。如果您包含一个简单的示例输入和所需的输出,可用于测试和验证可能的解决方案,或者使用内置函数,将0粘贴在前面,则更容易为您提供帮助
dx=c(0,diff(x$data))
谢谢大家,我已经用if语句对它进行了排序。非常感谢您的帮助,非常感谢!非常感谢你的帮助!你的第二个选择,如果得到了问题的排序!
for(i in 1:nr) {
  dx <- x$data[i] - c(x$data[i-1], 0)[1]
  print(dx)
}
prev <- 0
for(i in 1:nr) {
  dx <- x$data[i] - prev
  print(dx)
  prev <- x$data[i]
}
prev <- 0
for(xdata in x$data) {
  dx <- xdata - prev
  print(dx)
  prev <- xdata
}
dx <- x$data[1]
print(dx)
for(i in 2:nr) {
  dx <- x$data[i] - x$data[i-1]
  print(dx)
}
xdata <- c(0, x$data)
for(i in 2:length(xdata)) {
  dx <- xdata[i] - xdata[i-1]
  print(dx)
}
junk <- Reduce(function(x, y) { print(y-x); y }, init = 0, x$data)
c(x$data[1], diff(x$data))
diff(c(0, x$data))