我正在尝试修改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]&gt; a + b * p [1]){: 缺少需要TRUE / FALSE的值
答案 0 :(得分:0)
问题1 - 这是一个for循环 - 它对矩阵或数据帧x中的每一行执行一次(不确定x到底是什么)。将其更改为2意味着循环发生的时间更短。没有剩下的代码我就不能说太多了。
问题2 - 您可以发布整个代码吗?显然需要评估该表达式,并且缺少一个或多个值。
答案 1 :(得分: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