0

我正在尝试修改 R 脚本,但我只有 R 的基本经验:

问题 1: 在行:for (i in 1:nrow(x))。整数 1 实际上是做什么的?将值更改为 2 或更高似乎对输出有很大影响。

问题2:我收到了这样的信息:

"Error in if (p[2] > a + b * p[1]) { : 
  missing value where TRUE/FALSE needed"

. 一般来说,可能是什么原因造成的?

任何帮助深表感谢!


问题编辑:

假设我有一个用于绘制散点图的数据框。数据框将按以下方式组织(CSV 格式):

name ABC EFG
1    32  45
2    56  67
to, say 200 000 entries

我将首先做一个散点图,之后我将使用 alphahull 将数据集的一部分子集化为 A 并将它们导出为 XYZ。执行此操作的脚本:

#plot first plot containing all data
plot(x = X$ABC,
y = X$EFG,
pch=20,
)

#subset data using ahull. choose 4 points on the plot
A <- ahull(locator(4, type="p", pch=20), alpha=10000) 

#exporting subset
XYZ <- {}
for (i in 1:nrow(X)) { if (inahull(A, c(X$ABC[i],X$EFG[i]))) XYZ <- rbind(X,X[i,])}

如果我选择的子集中的数据点数量太大,我会收到以下消息:if (p[2] > a + b * p[1]) { : 需要 TRUE/FALSE 的缺失值

4

2 回答 2

0

假设你有数据 x

set.seed(123) # for reproducibility

x<-as.data.frame(rnorm(10)) # generate random number and store it as dataframe

k<-2  #assign n as 2 
for (i in (1:nrow(x))){
cat("this is row",i,"\n")
show (k)
k<-k+i
}
show (k)
this is row 1 
[1] 2
this is row 2 
[1] 3
this is row 3 
[1] 5
this is row 4 
[1] 8
this is row 5 
[1] 12
this is row 6 
[1] 17
this is row 7 
[1] 23
this is row 8 
[1] 30
this is row 9 
[1] 38
this is row 10 
[1] 47
> show (k)
[1] 57
于 2013-08-15T03:09:52.593 回答
0

问题 1 - 这是一个 for 循环 - 它对矩阵或数据帧 x 中的每一行执行一次(不确定 x 到底是什么)。将其更改为 2 将意味着循环少发生一次。如果没有其余的代码,我不能说太多。

问题 2 - 你能发布整个代码吗?它显然需要评估该表达式并且缺少一个或多个值。

于 2013-08-15T02:52:05.013 回答