簡體   English   中英

在單詞之間粘貼輸入名稱以使用 write.table 進行保存

[英]paste input name between words for save it using write.table

我是 R 的超級新手,由於我的工作學位,我已經為自己學習了幾個星期。 我幾乎完成了我需要的統計分析,但它是通過一個丑陋而凌亂的代碼,即對幾個數據幀重復大量代碼,以應用不同的統計測試,保存結果等。現在,為了個人利益,想把這個寫得更好,但我完全陷入了我的無知,真的需要推動才能得到這個想法,拜托了。 例如,我想創建一個函數來測量我使用的所有數據表的相關性,並使用輸入名稱作為輸出名稱的一部分將這些結果保存為表。 我的意思是,如果我們有 iris 數據但在不同季節測量,例如 iris_fall、iris_winter、iris_spring 和 iris_summer,在對每個數據應用cor(X)方法后,我想將這些結果保存為類似於“mCoriris_fall.txt”的表格、“mCoriris_winter.txt”、“mCoriris_spring.txt”和“mCoriris_summer.txt”。 我現在無用的代碼說:

cor_PQ<-function(X) {
  cor_PQ<-cor(X, use="pairwise.complete.obs")
  return(cor_PQ)
}
savecor<-function(t) {
  outputname<-(paste0("mCor",t)) #HOW DO I CALL THE NAME OF THE INPUT? t is cor_PQ result matrix.
  savecor<-write.table(t, file=paste0(outputname,".txt"))
  return(savecor)
}
cor_PQ(Iris_fall)

我希望獲得cor結果並將其保存為我的工作區中的表格,使用輸入名稱作為輸出名稱的一部分。 我知道這是 2 個獨立的函數,寫表的函數應該在cor(x)函數內部,但我無法理解。 我讀了很多書,但我無法完全記在腦海中。 感謝任何可以幫助我的人。 問候。

直到這里它已經解決了......但是在用我的 14 個數據框列出一個列表以應用cor和其他方法之后, write.table函數覆蓋了 1 個單個文檔上的 14 個cor結果。 這是我的代碼。

PQ_files<-list.files(path="C:/Users/Sol/Documents/ProyectoTítulo/CalidadAgua/Matrices/Regs",pattern="\\_PQ.txt")

PQ_data<-lapply(PQ_files, read.table)

names(PQ_data)<-gsub("\\_PQ.txt","", PQ_files)

PQ_data

cor_PQ<-function(X) {
  cor_PQ<-cor(X, use="pairwise.complete.obs")
  outputname.txt<-paste0("mCor",deparse(substitute(X)),".txt")
  write.table(cor_PQ, file=outputname.txt)
  outputname.pdf<-paste0("Cor",deparse(substitute(X)),".pdf")
  pdf(outputname.pdf)
  plot(X)
  dev.off()
  return(cor_PQ)
}

for (i in seq_along(PQ_data)){
  Correlaciones<-lapply(PQ_data,cor_PQ)
  }

Correlaciones

在 SUM 上:似乎工作得幾乎很好,直到write.tableplot(x)用名稱mCor[[i]]CorX[[i]]覆蓋了我的PQ_data上的 14 個數據幀的輸出。 我應該以某種方式定義 [i] 以使每個結果都具有正確的名稱嗎? 此外,當我最后運行Correlaciones時,我可以在一個數據幀中看到 14 個數據幀的cor結果,但我不知道如何正確拆分它們。 我想快到了。 再次感謝!

您可以組合這兩個函數並使用deparse substitute將輸入名稱作為字符串

cor_PQ <- function(X) {
   cor_PQ<-cor(X, use="pairwise.complete.obs")
   outputname<- paste0("mCor",deparse(substitute(X)), ".txt")
   write.table(t, file=outputname)
   return(cor_PQ)
}

然后打電話

cor_PQ(Iris_fall)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM