我有那種一個文本文件,填寫一個文本文件:,使用R
「你好,
我有%d的狗和%d貓,
其平均體重分別%f和%F公斤......「
我想創建的R函數,需要輸入一個向量 (例如c(2, 3, 3.4, 2.3)
)並使用其條目填充文本文件中的%f和%d (按正確順序)。
這應該是相當簡單的,但我找不到合適的方法來 做到這一點。謝謝!
我有那種一個文本文件,填寫一個文本文件:,使用R
「你好,
我有%d的狗和%d貓,
其平均體重分別%f和%F公斤......「
我想創建的R函數,需要輸入一個向量 (例如c(2, 3, 3.4, 2.3)
)並使用其條目填充文本文件中的%f和%d (按正確順序)。
這應該是相當簡單的,但我找不到合適的方法來 做到這一點。謝謝!
如果你能寫使用brew
包語法,你可以做到這一點您的模板:
I have <%= ndogs %> dogs and <%= ncats %> cats which on
average weight <%= dogweight/ndogs %> and <%= catweight/ncats %> kg
respectively
然後安裝brew
,並做到:
require(brew)
dogweight=23
catweight=12
ncats=4
ndogs=2
brew("animals.txt")
生產:
I have 2 dogs and 4 cats which on
average weight 11.5 and 3 kg
respectively
你可以發送到另一個文件或作爲文本捕獲到R.
你也可以在模板中做循環。沒有8192個字符限制,如sprintf
。
太好了,謝謝。這正是我所期待的。 –
正如@MatthewPlourde指出的那樣,sprintf
函數在這裏應該很有用。
a<-"Hello,
I have %d dogs and %d cats,
which on average weight respectively %f and %f kilograms... "
sprintf(a, 2, 3, 3.4, 2.3)
這確實需要「解包」您的向量作爲參數。如果你有一個向量中的值,你可以做
v<-c(2, 3, 3.4, 2.3)
do.call(sprintf, c(list(a), v))
謝謝!一個問題,但:如果我有一個文件「tmp.text」,爲了使用sprintf()我應該加載它全部作爲單個字符字符串?因爲我試圖做到這一點,我從sprintf()得到一個錯誤,因爲我的文本大於8192字節。另一方面,如果我使用readLines,我會得到一個向量,其中每行都是不同的條目,所以使用sprintf並不像上面的示例那樣簡單... –
您正在尋找'sprintf'函數。 –
有一個名爲'brew'的R包,它被設計用於填充模板 - 不同的語法,但是相同的結果。僅供參考 – Spacedman