R语言对文件和文件夹(目录)操作的方法积累一

R语言的强项是对数据的处理分析及可视化,很多人并不认为R是一门编程语言,但是它的确可以处理很多事情,而且简单易学易用易上手。别再傻傻的用Excel表格进行表格文件操作了,快点学习些编程知识,用程序去处理文件等等各种事情吧,这样可以延年益寿哦!

R语言中已经开发出来很多功能丰富的函数和工具包,一般可以解决大部分问题,如果现成的工具解决不了你的问题的话,建议自己构建工具!

内容目录:

#################################

# 一、对文件进行操作

# 1. 读

# 2. 写,创建文件

# 3. 删除文件

# 4. 复制文件

# 5. 更改文件名

# 6. 查看文件

# 二、对文件夹进行操作

##################################

一、对文件进行操作

1. 读

(1) readLines(),R base中的函数

用法:

readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,
          encoding = "unknown", skipNul = FALSE)

参数:

con    
a connection object or a character string.

n    
integer. The (maximal) number of lines to read. Negative values indicate that one should read up to the end of input on the connection.

ok    
logical. Is it OK to reach the end of the connection before n > 0 lines are read? If not, an error will be generated.

warn    
logical. Warn if a text file is missing a final EOL or if there are embedded nuls in the file.

encoding    
encoding to be assumed for input strings. It is used to mark character strings as known to be in Latin-1 or UTF-8: it is not used to re-encode the input. To do the latter, specify the encoding as part of the connection con or via options(encoding=): see the examples. See also ‘Details’.

skipNul    
logical: should nuls be skipped?

(2) read.table(),R base中的函数

用法:

read.table(file, header = FALSE, sep = "", quote = "\"'",
           dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
           row.names, col.names, as.is = !stringsAsFactors,
           na.strings = "NA", colClasses = NA, nrows = -1,
           skip = 0, check.names = TRUE, fill = !blank.lines.skip,
           strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#",
           allowEscapes = FALSE, flush = FALSE,
           stringsAsFactors = default.stringsAsFactors(),
           fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

参数:

file    
the name of the file which the data are to be read from. Each row of the table appears as one line of the file. If it does not contain an absolute path, the file name is relative to the current working directory, getwd(). Tilde-expansion is performed where supported. This can be a compressed file (see file).

Alternatively, file can be a readable text-mode connection (which will be opened for reading if necessary, and if so closed (and hence destroyed) at the end of the function call). (If stdin() is used, the prompts for lines may be somewhat confusing. Terminate input with a blank line or an EOF signal, Ctrl-D on Unix and Ctrl-Z on Windows. Any pushback on stdin() will be cleared before return.)

file can also be a complete URL. (For the supported URL schemes, see the ‘URLs’ section of the help for url.)

header    
a logical value indicating whether the file contains the names of the variables as its first line. If missing, the value is determined from the file format: header is set to TRUE if and only if the first row contains one fewer field than the number of columns.

sep    
the field separator character. Values on each line of the file are separated by this character. If sep = "" (the default for read.table) the separator is ‘white space’, that is one or more spaces, tabs, newlines or carriage returns.

quote    
the set of quoting characters. To disable quoting altogether, use quote = "". See scan for the behaviour on quotes embedded in quotes. Quoting is only considered for columns read as character, which is all of them unless colClasses is specified.

dec    
the character used in the file for decimal points.

numerals    
string indicating how to convert numbers whose conversion to double precision would lose accuracy, see type.convert. Can be abbreviated. (Applies also to complex-number inputs.)

row.names    
a vector of row names. This can be a vector giving the actual row names, or a single number giving the column of the table which contains the row names, or character string giving the name of the table column containing the row names.

If there is a header and the first row contains one fewer field than the number of columns, the first column in the input is used for the row names. Otherwise if row.names is missing, the rows are numbered.

Using row.names = NULL forces row numbering. Missing or NULL row.names generate row names that are considered to be ‘automatic’ (and not preserved by as.matrix).

col.names    
a vector of optional names for the variables. The default is to use "V" followed by the column number.

as.is    
the default behavior of read.table is to convert character variables (which are not converted to logical, numeric or complex) to factors. The variable as.is controls the conversion of columns not otherwise specified by colClasses. Its value is either a vector of logicals (values are recycled if necessary), or a vector of numeric or character indices which specify which columns should not be converted to factors.

Note: to suppress all conversions including those of numeric columns, set colClasses = "character".

Note that as.is is specified per column (not per variable) and so includes the column of row names (if any) and any columns to be skipped.

na.strings    
a character vector of strings which are to be interpreted as NA values. Blank fields are also considered to be missing values in logical, integer, numeric and complex fields. Note that the test happens after white space is stripped from the input, so na.strings values may need their own white space stripped in advance.

colClasses    
character. A vector of classes to be assumed for the columns. If unnamed, recycled as necessary. If named, names are matched with unspecified values being taken to be NA.

Possible values are NA (the default, when type.convert is used), "NULL" (when the column is skipped), one of the atomic vector classes (logical, integer, numeric, complex, character, raw), or "factor", "Date" or "POSIXct". Otherwise there needs to be an as method (from package methods) for conversion from "character" to the specified formal class.

Note that colClasses is specified per column (not per variable) and so includes the column of row names (if any).

nrows    
integer: the maximum number of rows to read in. Negative and other invalid values are ignored.

skip    
integer: the number of lines of the data file to skip before beginning to read data.

check.names    
logical. If TRUE then the names of the variables in the data frame are checked to ensure that they are syntactically valid variable names. If necessary they are adjusted (by make.names) so that they are, and also to ensure that there are no duplicates.

fill    
logical. If TRUE then in case the rows have unequal length, blank fields are implicitly added. See ‘Details’.

strip.white    
logical. Used only when sep has been specified, and allows the stripping of leading and trailing white space from unquoted character fields (numeric fields are always stripped). See scan for further details (including the exact meaning of ‘white space’), remembering that the columns may include the row names.

blank.lines.skip    
logical: if TRUE blank lines in the input are ignored.

comment.char    
character: a character vector of length one containing a single character or an empty string. Use "" to turn off the interpretation of comments altogether.

allowEscapes    
logical. Should C-style escapes such as \n be processed or read verbatim (the default)? Note that if not within quotes these could be interpreted as a delimiter (but not as a comment character). For more details see scan.

flush    
logical: if TRUE, scan will flush to the end of the line after reading the last of the fields requested. This allows putting comments after the last field.

stringsAsFactors    
logical: should character vectors be converted to factors? Note that this is overridden by as.is and colClasses, both of which allow finer control.

fileEncoding    
character string: if non-empty declares the encoding used on a file (not a connection) so the character data can be re-encoded. See the ‘Encoding’ section of the help for file, the ‘R Data Import/Export Manual’ and ‘Note’.

encoding    
encoding to be assumed for input strings. It is used to mark character strings as known to be in Latin-1 or UTF-8 (see Encoding): it is not used to re-encode the input, but allows R to handle encoded strings in their native encoding (if one of those two). See ‘Value’ and ‘Note’.

text    
character string: if file is not supplied and this is, then data are read from the value of text via a text connection. Notice that a literal string can be used to include (small) data sets within R code.

skipNul    
logical: should nuls be skipped?

(3) read.csv()

用法:

read.csv(file, header = TRUE, sep = ",", quote = "\"",
         dec = ".", fill = TRUE, comment.char = "", ...)

参数:

见read.table()的参数

(4) read.csv2()

用法:

read.csv2(file, header = TRUE, sep = ";", quote = "\"",
          dec = ",", fill = TRUE, comment.char = "", ...)

参数:

见read.table()的参数

(5) read.xlsx(),openxlsx包中的函数

用法:

read.xlsx(xlsxFile, sheet = 1, startRow = 1, colNames = TRUE,
  rowNames = FALSE, detectDates = FALSE, skipEmptyRows = TRUE,
  skipEmptyCols = TRUE, rows = NULL, cols = NULL, check.names = FALSE,
  namedRegion = NULL, na.strings = "NA", fillMergedCells = FALSE)

参数:

xlsxFile    
An xlsx file, Workbook object or URL to xlsx file.

sheet    
The name or index of the sheet to read data from.

startRow    
first row to begin looking for data. Empty rows at the top of a file are always skipped, regardless of the value of startRow.

colNames    
If TRUE, the first row of data will be used as column names.

rowNames    
If TRUE, first column of data will be used as row names.

detectDates    
If TRUE, attempt to recognise dates and perform conversion.

skipEmptyRows    
If TRUE, empty rows are skipped else empty rows after the first row containing data will return a row of NAs.

skipEmptyCols    
If TRUE, empty columns are skipped.

rows    
A numeric vector specifying which rows in the Excel file to read. If NULL, all rows are read.

cols    
A numeric vector specifying which columns in the Excel file to read. If NULL, all columns are read.

check.names    
logical. If TRUE then the names of the variables in the data frame are checked to ensure that they are syntactically valid variable names

namedRegion    
A named region in the Workbook. If not NULL startRow, rows and cols parameters are ignored.

na.strings    
A character vector of strings which are to be interpreted as NA. Blank cells will be returned as NA.

fillMergedCells    
If TRUE, the value in a merged cell is given to all cells within the merge.

(6)scan(),R base中的函数

用法:

scan(file = "", what = double(), nmax = -1, n = -1, sep = "",
     quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",
     skip = 0, nlines = 0, na.strings = "NA",
     flush = FALSE, fill = FALSE, strip.white = FALSE,
     quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,
     comment.char = "", allowEscapes = FALSE,
     fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

参数:

file    
the name of a file to read data values from. If the specified file is "", then input is taken from the keyboard (or whatever stdin() reads if input is redirected or R is embedded). (In this case input can be terminated by a blank line or an EOF signal, Ctrl-D on Unix and Ctrl-Z on Windows.)

Otherwise, the file name is interpreted relative to the current working directory (given by getwd()), unless it specifies an absolute path. Tilde-expansion is performed where supported. When running R from a script, file = "stdin" can be used to refer to the process's stdin file stream.

This can be a compressed file (see file).

Alternatively, file can be a connection, which will be opened if necessary, and if so closed at the end of the function call. Whatever mode the connection is opened in, any of LF, CRLF or CR will be accepted as the EOL marker for a line and so will match sep = "\n".

file can also be a complete URL. (For the supported URL schemes, see the ‘URLs’ section of the help for url.)

To read a data file not in the current encoding (for example a Latin-1 file in a UTF-8 locale or conversely) use a file connection setting its encoding argument (or scan's fileEncoding argument).

what    
the type of what gives the type of data to be read. (Here ‘type’ is used in the sense of typeof.) The supported types are logical, integer, numeric, complex, character, raw and list. If what is a list, it is assumed that the lines of the data file are records each containing length(what) items (‘fields’) and the list components should have elements which are one of the first six (atomic) types listed or NULL, see section ‘Details’ below.

nmax    
the maximum number of data values to be read, or if what is a list, the maximum number of records to be read. If omitted or not positive or an invalid value for an integer (and nlines is not set to a positive value), scan will read to the end of file.

n    
integer: the maximum number of data values to be read, defaulting to no limit. Invalid values will be ignored.

sep    
by default, scan expects to read ‘white-space’ delimited input fields. Alternatively, sep can be used to specify a character which delimits fields. A field is always delimited by an end-of-line marker unless it is quoted.

If specified this should be the empty character string (the default) or NULL or a character string containing just one single-byte character.

quote    
the set of quoting characters as a single character string or NULL. In a multibyte locale the quoting characters must be ASCII (single-byte).

dec    
decimal point character. This should be a character string containing just one single-byte character. (NULL and a zero-length character vector are also accepted, and taken as the default.)

skip    
the number of lines of the input file to skip before beginning to read data values.

nlines    
if positive, the maximum number of lines of data to be read.

na.strings    
character vector. Elements of this vector are to be interpreted as missing (NA) values. Blank fields are also considered to be missing values in logical, integer, numeric and complex fields. Note that the test happens after white space is stripped from the input, so na.strings values may need their own white space stripped in advance.

flush    
logical: if TRUE, scan will flush to the end of the line after reading the last of the fields requested. This allows putting comments after the last field, but precludes putting more that one record on a line.

fill    
logical: if TRUE, scan will implicitly add empty fields to any lines with fewer fields than implied by what.

strip.white    
vector of logical value(s) corresponding to items in the what argument. It is used only when sep has been specified, and allows the stripping of leading and trailing ‘white space’ from character fields (numeric fields are always stripped). Note: white space inside quoted strings is not stripped.

If strip.white is of length 1, it applies to all fields; otherwise, if strip.white[i] is TRUE and the i-th field is of mode character (because what[i] is) then the leading and trailing unquoted white space from field i is stripped.

quiet    
logical: if FALSE (default), scan() will print a line, saying how many items have been read.

blank.lines.skip    
logical: if TRUE blank lines in the input are ignored, except when counting skip and nlines.

multi.line    
logical. Only used if what is a list. If FALSE, all of a record must appear on one line (but more than one record can appear on a single line). Note that using fill = TRUE implies that a record will be terminated at the end of a line.

comment.char    
character: a character vector of length one containing a single character or an empty string. Use "" to turn off the interpretation of comments altogether (the default).

allowEscapes    
logical. Should C-style escapes such as \n be processed (the default) or read verbatim? Note that if not within quotes these could be interpreted as a delimiter (but not as a comment character).

The escapes which are interpreted are the control characters \a, \b, \f, \n, \r, \t, \v and octal and hexadecimal representations like \040 and \0x2A. Any other escaped character is treated as itself, including backslash. Note that Unicode escapes (starting \u or \U: see Quotes) are never processed.

fileEncoding    
character string: if non-empty declares the encoding used on a file (not a connection nor the keyboard) so the character data can be re-encoded. See the ‘Encoding’ section of the help for file, and the ‘R Data Import/Export Manual’.

encoding    
encoding to be assumed for input strings. If the value is "latin1" or "UTF-8" it is used to mark character strings as known to be in Latin-1 or UTF-8: it is not used to re-encode the input (see fileEncoding). See also ‘Details’.

text    
character string: if file is not supplied and this is, then data are read from the value of text via a text connection.

skipNul    
logical: should nuls be skipped when reading character fields?

2. 写,创建文件

(1)cat(),R base中的函数

用法:

cat(... , file = "", sep = " ", fill = FALSE, labels = NULL,
    append = FALSE)

参数:

...    
R objects (see ‘Details’ for the types of objects allowed).

file    
A connection, or a character string naming the file to print to. If "" (the default), cat prints to the standard output connection, the console unless redirected by sink.

sep    
a character vector of strings to append after each element.

fill    
a logical or (positive) numeric controlling how the output is broken into successive lines. If FALSE (default), only newlines created explicitly by "\n" are printed. Otherwise, the output is broken into lines with print width equal to the option width if fill is TRUE, or the value of fill if this is numeric. Non-positive fill values are ignored, with a warning.

labels    
character vector of labels for the lines printed. Ignored if fill is FALSE.

append    
logical. Only used if the argument file is the name of file (and not a connection or "|cmd"). If TRUE output will be appended to file; otherwise, it will overwrite the contents of file.

(2)write.table(),R base中的函数

用法:

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
            eol = "\n", na = "NA", dec = ".", row.names = TRUE,
            col.names = TRUE, qmethod = c("escape", "double"),
            fileEncoding = "")

参数:

x    
the object to be written, preferably a matrix or data frame. If not, it is attempted to coerce x to a data frame.

file    
either a character string naming a file or a connection open for writing. "" indicates output to the console.

append    
logical. Only relevant if file is a character string. If TRUE, the output is appended to the file. If FALSE, any existing file of the name is destroyed.

quote    
a logical value (TRUE or FALSE) or a numeric vector. If TRUE, any character or factor columns will be surrounded by double quotes. If a numeric vector, its elements are taken as the indices of columns to quote. In both cases, row and column names are quoted if they are written. If FALSE, nothing is quoted.

sep    
the field separator string. Values within each row of x are separated by this string.

eol    
the character(s) to print at the end of each line (row). For example, eol = "\r\n" will produce Windows' line endings on a Unix-alike OS, and eol = "\r" will produce files as expected by Excel:mac 2004.

na    
the string to use for missing values in the data.

dec    
the string to use for decimal points in numeric or complex columns: must be a single character.

row.names    
either a logical value indicating whether the row names of x are to be written along with x, or a character vector of row names to be written.

col.names    
either a logical value indicating whether the column names of x are to be written along with x, or a character vector of column names to be written. See the section on ‘CSV files’ for the meaning of col.names = NA.

qmethod    
a character string specifying how to deal with embedded double quote characters when quoting strings. Must be one of "escape" (default for write.table), in which case the quote character is escaped in C style by a backslash, or "double" (default for write.csv and write.csv2), in which case it is doubled. You can specify just the initial letter.

fileEncoding    
character string: if non-empty declares the encoding to be used on a file (not a connection) so the character data can be re-encoded as they are written. See file.

...    
arguments to write.table: append, col.names, sep, dec and qmethod cannot be altered.

(3)write.csv()

用法:

read.csv(file, header = TRUE, sep = ",", quote = "\"",
         dec = ".", fill = TRUE, comment.char = "", ...)

参数:

见write.table()的参数

(4)write.csv2()

用法:

read.csv2(file, header = TRUE, sep = ";", quote = "\"",
          dec = ",", fill = TRUE, comment.char = "", ...)

参数:

见write.table()的参数

(5)write.xlsx(),openxlsx包中的函数

用法:

write.xlsx(x, file, asTable = FALSE, ...)

参数:

x    
object or a list of objects that can be handled by writeData to write to file

file    
xlsx file name

asTable    
write using writeDataTable as opposed to writeData

...    
optional parameters to pass to functions:

createWorkbook

addWorksheet

writeData

freezePane

saveWorkbook

(6)file.create(),R base中的函数

用法:

file.create(..., showWarnings = TRUE)

参数:

file1, file2    
character vectors, containing file names or paths.

from, to    
character vectors, containing file names or paths. For file.copy and file.symlink and Sys.junction to can alternatively be the path to a single existing directory.

overwrite    
logical; should existing destination files be overwritten?

showWarnings    
logical; should the warnings on failure be shown?

recursive    
logical. If to is a directory, should directories in from be copied (and their contents)? (Like cp -R on POSIX OSes.)

copy.mode    
logical: should file permission bits be copied where possible?

copy.date    
logical: should file dates be preserved where possible? See Sys.setFileTime.

3. 删除文件

(1)unlink(),R base中的函数

用法:unlink(x, recursive = FALSE, force = FALSE)

参数:

x    
a character vector with the names of the file(s) or directories to be deleted. Wildcards (normally ‘*’ and ‘?’) are allowed.

recursive    
logical. Should directories be deleted recursively?

force    
logical. Should permissions be changed (if possible) to allow the file or directory to be removed?

(2)file.remove(),R base中的函数

用法:file.remove("A", "B", "C")

参数:
file1, file2    
character vectors, containing file names or paths.

from, to    
character vectors, containing file names or paths. For file.copy and file.symlink and Sys.junction to can alternatively be the path to a single existing directory.

overwrite    
logical; should existing destination files be overwritten?

showWarnings    
logical; should the warnings on failure be shown?

recursive    
logical. If to is a directory, should directories in from be copied (and their contents)? (Like cp -R on POSIX OSes.)

copy.mode    
logical: should file permission bits be copied where possible?

copy.date    
logical: should file dates be preserved where possible? See Sys.setFileTime.

4. 复制文件

(1)file.copy(),R base中的函数

用法:

file.copy(from, to, overwrite = recursive, recursive = FALSE, copy.mode = TRUE, copy.date = FALSE)

参数:

file1, file2    
character vectors, containing file names or paths.

from, to    
character vectors, containing file names or paths. For file.copy and file.symlink and Sys.junction to can alternatively be the path to a single existing directory.

overwrite    
logical; should existing destination files be overwritten?

showWarnings    
logical; should the warnings on failure be shown?

recursive    
logical. If to is a directory, should directories in from be copied (and their contents)? (Like cp -R on POSIX OSes.)

copy.mode    
logical: should file permission bits be copied where possible?

copy.date    
logical: should file dates be preserved where possible? See Sys.setFileTime.

5. 更改文件名

(1)file.rename(),R base中的函数

用法:

 file.rename(from, to)

参数:

见file.copy的参数

6. 查看文件

(1)list.files(),R base函数

用法:

list.files(path = ".", pattern = NULL, all.files = FALSE,
           full.names = FALSE, recursive = FALSE,
           ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

参数:

path    
a character vector of full path names; the default corresponds to the working directory, getwd(). Tilde expansion (see path.expand) is performed. Missing values will be ignored.

pattern    
an optional regular expression. Only file names which match the regular expression will be returned.

all.files    
a logical value. If FALSE, only the names of visible files are returned. If TRUE, all file names will be returned.

full.names    
a logical value. If TRUE, the directory path is prepended to the file names to give a relative file path. If FALSE, the file names (rather than paths) are returned.

recursive    
logical. Should the listing recurse into directories?

ignore.case    
logical. Should pattern-matching be case-insensitive?

include.dirs    
logical. Should subdirectory names be included in recursive listings? (They always are in non-recursive ones).

no..    
logical. Should both "." and ".." be excluded also from non-recursive listings?

(2)file.exists(),R base函数

用法:

file.exists(“file_name”)

参数:

见file.copy参数

(3)System("tree"),system R base

用法:

system(command, intern = FALSE,
       ignore.stdout = FALSE, ignore.stderr = FALSE,
       wait = TRUE, input = NULL, show.output.on.console = TRUE,
       minimized = FALSE, invisible = TRUE, timeout = 0)

参数:

command    
the system command to be invoked, as a character string.

intern    
a logical (not NA) which indicates whether to capture the output of the command as an R character vector.

ignore.stdout, ignore.stderr    
a logical (not NA) indicating whether messages written to ‘stdout’ or ‘stderr’ should be ignored.

wait    
a logical (not NA) indicating whether the R interpreter should wait for the command to finish, or run it asynchronously. This will be ignored (and the interpreter will always wait) if intern = TRUE. When running the command asynchronously, no output will be displayed on the Rgui console in Windows (it will be dropped, instead).

input    
if a character vector is supplied, this is copied one string per line to a temporary file, and the standard input of command is redirected to the file.

timeout    
timeout in seconds, ignored if 0. This is a limit for the elapsed time running command in a separate process. Fractions of seconds are ignored.

show.output.on.console    
logical (not NA), indicates whether to capture the output of the command and show it on the R console (not used by Rterm, which shows the output in the terminal unless wait is false, and on some systems even when wait is false).

minimized    
logical (not NA), indicates whether a command window should be displayed initially as a minimized window.

invisible    
logical (not NA), indicates whether a command window should be visible on the screen.

(4)dir(),R base函数

用法:

dir(path = ".", pattern = NULL, all.files = FALSE,
           full.names = FALSE, recursive = FALSE,
           ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

参数:

path    
a character vector of full path names; the default corresponds to the working directory, getwd(). Tilde expansion (see path.expand) is performed. Missing values will be ignored.

pattern    
an optional regular expression. Only file names which match the regular expression will be returned.

all.files    
a logical value. If FALSE, only the names of visible files are returned. If TRUE, all file names will be returned.

full.names    
a logical value. If TRUE, the directory path is prepended to the file names to give a relative file path. If FALSE, the file names (rather than paths) are returned.

recursive    
logical. Should the listing recurse into directories?

ignore.case    
logical. Should pattern-matching be case-insensitive?

include.dirs    
logical. Should subdirectory names be included in recursive listings? (They always are in non-recursive ones).

no..    
logical. Should both "." and ".." be excluded also from non-recursive listings?

(5)file.info(),R base函数

用法:

file.info(..., extra_cols = TRUE)

参数:

...    
character vectors containing file paths. Tilde-expansion is done: see path.expand.

extra_cols    
Logical: return all cols rather than just the first six.

本次内容较多,下次总结整理R对文件夹(目录)操作的函数和包

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值