if(条件)中的R“参数长度为零”
R “argument is of length zero” in if(condition)
R 的新手,如果你能告诉我我做错了什么,我将不胜感激。
这是我的初始代码:
count <- 0
for (i in 1:nrow(data))
{
if(outcome[i]==data[1,i])
inc(count) <- 1 #package Hmisc
}
其中 outcome 和 data[1] 是具有二进制值的向量,例如。 [1, 0, 0, 1, 1, 0..]
我用 if 语句得到了结果“参数的长度为零”。用 matched/mismatched 的行单独测试它,发现结果只出现在后者中。
所以我将代码修改为:
count <- 0
for (i in 1:nrow(data))
{
if(!is.null(outcome[i]==data[1,i]))
inc(count) <- 1 #package Hmisc
}
现在count返回的值就是'for'迭代的次数。
这是否意味着 R 不会为新代码中的任何不匹配返回空值??这是怎么回事?请问解决方案?
如果数据是一维数组(您显示的二进制数据是)而不是矩阵、向量或其他结构,您可以使用长度来查找行数。此代码显示如何根据与一维数组的匹配添加计数(请注意,我假设 inc 是一个类似 pascal 的自定义函数)。
data = c(1, 0, 0, 1, 1, 0)
outcome = c(0, 0, 1, 0, 1, 0)
count <- 0
for (i in 1:length(data))
{
if(outcome[i]==data[i]) {
count <- count + 1 #could then do inc(count) for package Hmisc
}
}
count
如果您的数据被 return 编辑为向量矩阵,请尝试此代码(Hmisc 上的注释相同)。:
data <- read.table(text = "
0 1 0 1
0 0 1 1
1 1 0 0
1 0 1 0
0 1 0 1", header = FALSE)
data <- as.matrix(data)
outcome <- c(0, 0, 1, 0, 1)
count <- 0
for (i in 1:nrow(data))
{
if(!is.null(outcome[i]==data[i, 1])) {
count <- count + 1 #see first example
}
}
cat(count)
注意:nrow return 是整数或 NULL
R 的新手,如果你能告诉我我做错了什么,我将不胜感激。
这是我的初始代码:
count <- 0
for (i in 1:nrow(data))
{
if(outcome[i]==data[1,i])
inc(count) <- 1 #package Hmisc
}
其中 outcome 和 data[1] 是具有二进制值的向量,例如。 [1, 0, 0, 1, 1, 0..]
我用 if 语句得到了结果“参数的长度为零”。用 matched/mismatched 的行单独测试它,发现结果只出现在后者中。
所以我将代码修改为:
count <- 0
for (i in 1:nrow(data))
{
if(!is.null(outcome[i]==data[1,i]))
inc(count) <- 1 #package Hmisc
}
现在count返回的值就是'for'迭代的次数。
这是否意味着 R 不会为新代码中的任何不匹配返回空值??这是怎么回事?请问解决方案?
如果数据是一维数组(您显示的二进制数据是)而不是矩阵、向量或其他结构,您可以使用长度来查找行数。此代码显示如何根据与一维数组的匹配添加计数(请注意,我假设 inc 是一个类似 pascal 的自定义函数)。
data = c(1, 0, 0, 1, 1, 0)
outcome = c(0, 0, 1, 0, 1, 0)
count <- 0
for (i in 1:length(data))
{
if(outcome[i]==data[i]) {
count <- count + 1 #could then do inc(count) for package Hmisc
}
}
count
如果您的数据被 return 编辑为向量矩阵,请尝试此代码(Hmisc 上的注释相同)。:
data <- read.table(text = "
0 1 0 1
0 0 1 1
1 1 0 0
1 0 1 0
0 1 0 1", header = FALSE)
data <- as.matrix(data)
outcome <- c(0, 0, 1, 0, 1)
count <- 0
for (i in 1:nrow(data))
{
if(!is.null(outcome[i]==data[i, 1])) {
count <- count + 1 #see first example
}
}
cat(count)
注意:nrow return 是整数或 NULL