
那个小"r"是本来Excel表格里自己命名的相关系数,代码一直报错😭
引自免费微信小程序:皆我百晓生
在R语言中,match()函数用于查找和匹配一个特定的表达式(在此例中,m <- metagen(Scohen, num, f, r))在数据集中的值。然而,在遇到标题参数缺失的情况时,R可能会试图从参数列表中寻找相关的名字以填充它。
在你的例子中,您遇到了三个主要问题:
Parameter 3: 这个参数名 num 没有在你的数据集中找到相应的对象,这可能是由于num 参数的实际名称与其他相关的元组、变量或引用不同导致的。r 参数的名称是你手动为每个num分配的标签,这些标签通常根据实际定义的值来确定。如果你想指定一个特定的对象作为参数num,你需要确保这个名称与任何你尝试用作参数对象的其他对象保持一致。例如,如果你有两个名为i和j的变量,分别对应于不同的对象foo和bar,则你可以这样设置参数:params <- c("num" = i, "r" = j) # 示例:将两个变量命名为"num"和"r"
Parameter 4: 如果你尝试将num替换为数值类型(如整数或字符),但变量名称与对应的函数(在这个例子中,metagen.Scohen(num, f, r))不符,R也可能会尝试在参数列表中查找匹配名称,但是可能不会成功。在这种情况下,sm参数应该与函数的返回值类型(在这个例子中,Cohen's d常量)相符,否则Cohen'd'的名称会作为查找结果而返回,而不是f。params <- c("num" = i, "r" = j, "sm" = c('Cohen', 'd')) # 示例:将两个变量命名为"num"、"r"和"Cohen'd"
Error:找不到对象 和 Error:找不到对象'r': 通常意味着r参数对应的值不存在或未正确处理。这可能是因为r参数是在调用metagen()函数之前设置的,或者是对传递给metagen()函数的参数进行了一次多次拼接和重命名。为了正确地找到并处理r参数,你应该确保其值在数据集或调用metagen()函数时已正确赋值,并且没有被重新命名或忽略。例如:
# 初始化`r`参数的值
params <- list(r = c("r" = i)) # 假设i是一个值
# 设置`r`参数的名称
names(params)[which(names(params)$r == i)] <- "r"
# 调用`metagen()`函数
m <- metagen(Scohen, ... params)
请将上述代码添加到你的R环境配置中,并确保数据集结构和你的代码执行路径都与R解释器提供的变量名称相匹配。此外,注意在某些情况下,可能需要调整分隔符(sep)和符号,以便它们更准确地描述与参数相关联的对象。例如,metagen$year和metagen$title可以表示年份和标题变量,metagen$cohen和metagen$d可以表示 Cohen 样本常量和 Cohen's d 常量。
最后,为了避免将r参数直接标记为缺失,你可以通过将一个空列表作为参数传入metagen()函数,从而强制其处理所有匹配名称的r参数。例如:
params <- list() # 创建一个空列表作为参数
results <- metagen(Scohen, ... params)
if(length(results) > 0) {
results <- lapply(results, function(x) { ifelse(x == "", x, x)})
}
在这个例子中,lapply()函数遍历结果列表,并检查每个元素是否为空字符串。如果第一个元素为空字符串,则将其设置为原始参数x,否则保留原始参数x不变。这样,无论r参数名称如何变化,它们都将得到相同的处理方式。