【问题标题】:Passing a string value as argument in function在函数中传递字符串值作为参数
【发布时间】:2017-11-04 16:28:48
【问题描述】:

我想创建一个函数来搜索数据并找到条件值等于特定字符串的经验值。然而,这会产生这个错误:

错误:求值嵌套太深:无限递归/选项(表达式=)?

总结时出错:评估嵌套太深:无限递归/选项(表达式

subset = function(data, ttt="string") {
    subset.cond <- subset(data, Condition==ttt) 
    row.cond <- subset.cond[ which(subset.cond$experience != 0),] 
    row.cond$experience <- factor(row.cond$experience) #drop factor levels
    exp.cond <- levels(row.cond$experience) #get experience names
    cond <- data[ which(data$experience==exp.cond ), ] #cleaned data
    return(list(subset.cond=subset.cond,row.cond=row.cond,exp.cond=exp.cond))
}

subset(data=data_1, ttt="drug1")

有人有什么建议吗? 非常感谢!

【问题讨论】:

  • 能否提供样本数据?
  • 强度经验条件1.0240835869 N5 drug4 1.6622650638 N5 drug4 0.8888095207 N5 drug4 0.9113421721 N5 drug4 1.2815784814 N11药物2 0.5038846664 N11药物2 1.5163685324 N11药物2 1.315169773 N5 drug1 +药物2 1.2837342548 N5 drug1 +药物2 1.307013202 N5 drug1 +药物2 1.1297371947 N5 drug1 +药物2 0.6114186921 N11 drug1 +药物2 1.0337745362 N11 drug1 +药物2 1.5503374089 N11 drug1 +药物2 1.4897651898 N11 drug1 +药物2 1.4164219704 N9 drug4 0.6683913411 N9 drug4 2.031900503 N9 drug1 3.5488157902 N9 drug1 2.1030339989 N9 drug1 2.1243746251 N9 drug1  PRE> 跨度>
                    
                  
                    
                            
                
  • 该函数是查看特定列还是查看整个数据集?您可以使用grepl 函数来检查特定模式是否匹配。作为一个例子,使用这个grepl("an", c("use","another","example","man"))

标签: r function


【解决方案1】:

你写了一个无限递归函数;你打算吗?函数subset 的第一行调用subset(即它调用自己)。

您可以通过指定要使用基本函数subset 来使此函数工作。即,

subset = function(data, ttt="string") {
    subset.cond <- base::subset(data, Condition==ttt)
    [...]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2020-05-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多