【发布时间】:2017-04-03 17:14:23
【问题描述】:
我想创建一个函数,使用来自其他数据帧的一些变量创建新数据帧。为此,我需要以某种方式在我自己的函数中打印变量名。
变量来自两个数据框(asd 和 tetracam),这两个数据框共有六个变量,即波段“w530”、“w550”、“w570”、“670”、“w700”和“w800”。所以,我想创建六个数据框,每个波段一个。我可以这样写一篇一篇:
# Band w530
w530<-data.frame(tetracam$filename,tetracam$time,tetracam$type,tetracam$w530,asd$w530)
names(w530)<-c("filename","time","type","tetracam","asd")
w530<-w530[order(w530$time),]
它工作得很好,但我想把它作为一个函数来运行,以便为所有乐队运行。我想我必须将上面代码中的所有 w530 替换为动态对象。当我想到使用一些应用程序时。因此,我首先创建了一个包含常用变量名称的列表:
bands<-c("w530","w550","w570","670","w700","w800")
然后,我尝试了几种方法,例如,使用 cat 或 sprintf 将使用列表中的字符串来填充我的函数。但它没有用。实际上,我不确定我会使用哪个apply 家庭功能。如果在这种情况下可以使用任何:
my.fun<- function(band){
sprintf("%s<-data.frame(tetracam$filename,tetracam$time,tetracam$type,asd$%s,tetracam$%s)",band,band,band)
sprintf("names(%s)<-c('filename','time','type','asd','tetracam')",band)
sprintf("%s[order(%s$time),]",band,band)
}
感谢任何帮助。
【问题讨论】:
-
您没有将这两个数据帧(即 asd 和 tetracam)传递给函数。尝试在函数中再添加两个参数,并将这两个用作您的输入。否则,函数默认无法访问环境变量。
-
请使用
dput提供您的数据集的可重现示例。 -
Why accept an answer?。接受答案可以帮助其他有相同问题的人。