私は環境研究センターの仕事をしています。作物シミュレーションの使用する入力ファイルは.dlyです.csvファイルからデータフレームを取り出して、テーブルに必要なものを作ったこれらのデータフレームを.dly形式でエクスポートする必要があります。誰もこれを行う方法を知っていますか?ここでRから.dlyへのデータフレームの出力
0
A
答えて
1
は良いスタートかもしれないハッキングアップ機能です:
#' Write fixed-width-format files.
#'
#' @param x data.frame
#' @param file character; if none provided, output to
#' \code{\link{stdout}}
#' @param widths numeric vector of same length as columns in 'x'; if
#' missing, will determine by finding the longest string within each
#' column; strings that are over this width are silently trimmed
#' @param decimals integer, number of decimal places to preserve when
#' printing the numbers (passed directly to \code{\link{round}}; if
#' missing, no rounding is done
#' @param header logical, whether to include the column names at the
#' top of the file (may have an effect on auto-determined column
#' widths
#' @param justify character vector, indicates if each column should be
#' justified 'l'eft or 'r'ight; may also be a single string with all
#' columns, such as 'lrrlrll'
#' @param space integer, number of spaces to place between data,
#' generally only useful if widths are auto-generated
#' @return nothing
#' @export
#' @examples
#' \dontrun{
#'
#' write.fwf(head(mtcars))
#' write.fwf(head(mtcars), space = 1)
#' write.fwf(head(mtcars), decimals = 1, space = 1)
#' write.fwf(head(mtcars), decimals = c(0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0), space = 1)
#' write.fwf(head(mtcars), widths = c(4,6,5,8,3,8,3,3,8,8,6))
#' write.fwf(head(mtcars), header = FALSE, space = 1)
#' write.fwf(head(mtcars), space = 1, justify = "lllllrrrrrr")
#'
#' }
write.fwf <- function(x, file, widths, decimals, header = TRUE,
justify = "r", space = 0L) {
if (missing(file)) file <- stdout()
if (length(justify) == 1L && nchar(justify) > 1L) {
justify <- strsplit(justify, "")[[1]]
}
if (! length(justify) %in% c(1L, length(x))) {
stop("justify must be of length 1 or same as the number of columns in 'x'")
}
# convert to character, with/without header
xchar <- mapply(function(nm, vec, dec) {
c(if (header) nm,
if (is.numeric(vec)) sprintf(paste0("%0.", dec, "f"), vec) else as.character(a))
}, names(x), x, if (missing(decimals)) "" else decimals, SIMPLIFY = FALSE)
if (missing(widths)) widths <- sapply(xchar, function(col) max(nchar(col)))
# enforce column widths
jsign <- ifelse(justify == "l", "-", "")
fmts <- mapply(paste0, "%", jsign, widths, "s", USE.NAMES = FALSE)
y <- mapply(function(fmt, wid, cvec) substr(sprintf(fmt, cvec), 1L, wid),
fmts, widths, xchar)
# print it out
spacechar <- paste(rep(" ", space), collapse = "")
cat(paste(paste0(apply(y, 1, paste, collapse = spacechar)),
collapse = "\n"), "\n",
file = file)
invisible()
}
使用例:
write.fwf(head(mtcars))
# mpgcyldisp hpdratwtqsecvsamgearcarb
# 21 6 160110 4 3 16 0 1 4 4
# 21 6 160110 4 3 17 0 1 4 4
# 23 4 108 93 4 2 19 1 1 4 1
# 21 6 258110 3 3 19 1 0 3 1
# 19 8 360175 3 3 17 0 0 3 2
# 18 6 225105 3 3 20 1 0 3 1
write.fwf(head(mtcars), space = 1)
# mpg cyl disp hp drat wt qsec vs am gear carb
# 21 6 160 110 4 3 16 0 1 4 4
# 21 6 160 110 4 3 17 0 1 4 4
# 23 4 108 93 4 2 19 1 1 4 1
# 21 6 258 110 3 3 19 1 0 3 1
# 19 8 360 175 3 3 17 0 0 3 2
# 18 6 225 105 3 3 20 1 0 3 1
write.fwf(head(mtcars), decimals = c(2,0,0,0,1,2,0,0,0,0,0), space = 1)
# mpg cyl disp hp drat wt qsec vs am gear carb
# 21.00 6 160 110 3.9 2.62 16 0 1 4 4
# 21.00 6 160 110 3.9 2.88 17 0 1 4 4
# 22.80 4 108 93 3.8 2.32 19 1 1 4 1
# 21.40 6 258 110 3.1 3.21 19 1 0 3 1
# 18.70 8 360 175 3.1 3.44 17 0 0 3 2
# 18.10 6 225 105 2.8 3.46 20 1 0 3 1
write.fwf(head(mtcars), widths = c(4,6,5,8,3,8,3,3,8,8,6))
# mpg cyl disp hpdra wtqse vs am gear carb
# 21 6 160 110 4 3 16 0 1 4 4
# 21 6 160 110 4 3 17 0 1 4 4
# 23 4 108 93 4 2 19 1 1 4 1
# 21 6 258 110 3 3 19 1 0 3 1
# 19 8 360 175 3 3 17 0 0 3 2
# 18 6 225 105 3 3 20 1 0 3 1
(による列幅に名前の損失に気づく)
関連する問題
- 1. ループの出力をリストからデータフレームへ変換するR
- 2. RのデータフレームからRへの変換
- 3. Rデータフレームからデータフレームへのリスト
- 4. ループの出力をRデータフレーム
- 5. JSONファイルからデータフレームへR
- 6. R-jsonウェブページからデータフレームへ
- 7. R:データフレームへの特定のユーザー入力
- 8. R出力からコンフルエンスページへREST API
- 9. R:リストを出力データフレーム
- 10. XMLデータからRへのデータフレーム
- 11. whileループからのデータフレーム出力の保存R
- 12. Rのループ:データフレームの出力を格納
- 13. データフレームへのリストR
- 14. データフレームから垂直方向に行値を出力 - R
- 15. パイプ出力からファイルへの出力
- 16. ネストされたXMLからRへのデータフレームへ
- 17. RからPHPへの出力を渡す
- 18. データフレームからの出力を表示
- 19. KWICの既存データフレームへR
- 20. テーブルからのデータフレームの行への結果R
- 21. データフレームのリストからR
- 22. R:データフレームからのキー値ペアで出力を生成できません
- 23. データフレームのサブセットの抽出R
- 24. R POSIXltからの奇数出力
- 25. r - 光沢を介してデータフレームへのユーザー入力値
- 26. 入れ子になったXMLからRへのデータフレーム
- 27. このrnoaaの出力をデータフレームに変換する方法R
- 28. R複数のリストの各データフレームから値を抽出する
- 29. はデータフレームで出力を必要とするか、またはR
- 30. 親からのdraftjs出力へのアクセス
このリンクこれは単なるFWFファイルだと私に思い出させます。 http://www1.ncdc.noaa.gov/pub/data/ghcn/daily/readme.txtあなた自身で「研究」を行ったことがありますか? –
Nice find @ 42-誰もが '.dly' ==をformatで固定しているわけではありません。ジョシュア:FWIW、セクションIIIを見る必要があります。あなたは 'gdata'パッケージを調査しない限り' write.fwf() 'がないので、'?cat'と '?sprintf'を提案したいと思います。 。 – hrbrmstr