我已经远离了 R 中的函数,但认为这是更好的做法。现在我有这个问题。我写我的函数:
myFunction<-function(tab){ #takes tabular input
inP<-c()
for (x in 1:dim(tab)[1]){ #iterate over rows
rname<-rownames(tab)[x] #rownames as output
if(rname<5) inP<-c(inP,rname) #trivial work
}
return(inP) #return the vector made above
}
tablist<-as.list(paste("tab",1:4,sep=""))
for (x in 1:length(tablist)){
tablist[[x]]<-table(c(1:10),c(1:10))
}
inPvec<-c() #predefine vector to concatenate results into
for (x in 1:length(tablist)){ #tabs holds multiple tables as a list
myFunction(tablist[[x]]) #run myFunction for each table held in tabs
inPvec<-c(inPvec,inP) #concatenate results from each iteration
}
inP
#NULL
myFunction(tablist[[1]])
#[1] "1" "2" "3" "4" "10"
编辑为可行的示例:为懒惰道歉。
如果运行示例中的循环,inP 将返回 NULL,inPvec 也是如此。在函数中运行单个表会返回正确的值。但是, inP 在调用它时为 NULL,所以我想这就是我的问题所在。
我希望循环迭代函数中的所有内容都返回到单个向量,例如:
inPVec
#[1] "1" "2" "3" "4" "10" "1" "2" "3" "4" "10" "1" "2" "3" "4" "10" etc
非常感谢任何帮助。
问题是您没有得到函数的结果:
inPvec<-c() #predefine vector to concatenate results into
for (x in tabs){ #tabs holds multiple tables as a list
inPvec<-c(inPvec,myFunction(x)) #concatenate results from each iteration
}
你也应该纠正你的功能:
myFunction<-function(tab){ #takes tabular input
inP <- c()
for (x in 1:dim(tab)[1]){ #iterate over rows
rname<-rownames(tab)[x] #rownames as output
if(rname=="something") inP<-c(inP,rname) #trivial work
}
return(inP) #return the vector made above
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)