Tôi muốn chia sẻ một số phần mềm như một gói nhưng một số tập lệnh của tôi dường như không hoạt động bình thường như các hàm. Ví dụ, xem xét đoạn mã sau đây trong đó 'raw.df' là một khung dữ liệu chứa các biến của cả hai loại rời rạc và liên tục. Các hàm 'count.unique' và 'squash' sẽ được định nghĩa trong gói. Kịch bản chia khung dữ liệu thành hai khung, 'cat.df' được coi là dữ liệu phân loại và 'cts.df' được coi là dữ liệu liên tục.Bao gồm các tập lệnh R trong các gói R
Ý tưởng của tôi về cách thức này sẽ được sử dụng là người dùng sẽ đọc trong khung dữ liệu 'raw.df', nguồn tập lệnh, sau đó tương tác chỉnh sửa 'cat.df' và 'cts.df', có thể kết hợp một số loại và chuyển đổi một số biến.
dcutoff <- 9
tail(raw.df)
(nvals <- apply(raw.df, 2, count.unique))
p <- dim(raw.df)[2]
(catvar <- (1:p)[nvals <= dcutoff])
p.cat <- length(catvar)
(ctsvar <- (1:p)[nvals > dcutoff])
p.cts <- length(ctsvar)
cat.df <- raw.df[ ,catvar]
for (i in 1:p.cat) cat.df[ ,i] <- squash(cat.df[ ,i])
head(cat.df)
for(i in 1:p.cat) {
cat(as.vector(table(cat.df[ ,i])), "\n")
}
cts.df <- raw.df[ ,ctsvar]
for(i in 1:p.cts) {
cat(quantile(cts.df[ ,i], probs = seq(0, 1, 0.1)), "\n")
}
Bây giờ, điều này có thể được đưa vào hàm trả về danh sách chứa khoảng thời gian, p, p.cat, cat.df, v.v. tuy nhiên điều này có vẻ hơi xấu với tôi. Tuy nhiên, điều khoản duy nhất để bao gồm các tập lệnh trong một gói có vẻ là thư mục 'demo' mà dường như không phải là cách đi đúng đắn. Lời khuyên về cách tiến hành sẽ được biết ơn sâu sắc.
(Nhưng lòng biết ơn sẽ không được biểu diễn chính thức như nó có vẻ rằng việc sử dụng một lời nhận xét chân thành cảm ơn bị phản đối.)
tôi sử dụng 'inst/scripts /' mà còn làm cho các tập tin một sản (thực thi) kịch bản qua Rscript hoặc littler. –
Tại sao hàm trả về số lượng đó có vẻ xấu xí với bạn? Có phải vì nó sẽ không in ra cùng một cách như bạn có nó trong kịch bản? Bạn có thể làm cho chức năng in tùy chỉnh của riêng bạn để làm điều đó một phần ... – Dason
Dirk - bạn có biết một gói sử dụng phương pháp này không? –