【问题标题】:Lacking output strings when using function in R在 R 中使用函数时缺少输出字符串
【发布时间】:2014-11-14 10:33:24
【问题描述】:

下面的函数有问题:

ab<-matrix(c(1:20),nrow=4)
rownames(ab)<-c("a","b","c","d")
cd<-c("a","c")

test<-function(x,y,ID_Tag){
for(i in y) {
  M_scaled<-t(scale(t(x),center=T))           
  a<-quantile(M_scaled[match(i,rownames(x)),])
  assign(paste0("Probes_",ID_Tag,"_quan_",i),a)         
}
}

test(ab,cd,"C1")

x 是数据框/矩阵

y 是我需要在 rownames(x) 中搜索的字符串

ID_Tag 是我用来区分样本的编号。

函数正在运行,但之后没有输出生成字符串。

希望有人可以帮助我

【问题讨论】:

  • 请提供一些示例输入。
  • 我添加了一些类似于我使用的数据

标签: r function loops output


【解决方案1】:

当您在函数中使用assign 时,它会将分配给只能在该函数中访问的变量(即,就像使用&lt;-)。为了解决这个问题,您需要将assign 中的envir 参数指定为全局环境globalenv() 或函数的父框架。因此,尝试将您的 assign 语句更改为

assign(..., envir = parent.frame())

assign(..., envir = globalenv())

取决于您到底想要什么(在您提供的示例中,它们是等效的)。查看?parent.frame 了解更多信息。另一种可能性是在assign 中指定pos 参数,检查?assign

顺便说一句,从函数内分配全局对象通常会导致各种问题。我发现在您的示例中返回在for 循环中创建的对象列表而不是使用分配是更好的做法。

【讨论】:

  • 非常感谢!不知道这一点,你实际上解决了我的很多问题!
猜你喜欢
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多