R——我希望数据帧名称由命令行参数确定
我希望数据帧名称由命令行参数确定。下面应该清楚地说明我想做什么…我希望 使用以下命令执行:R——我希望数据帧名称由命令行参数确定,r,save,command-line-arguments,dataframe,R,Save,Command Line Arguments,Dataframe,我希望数据帧名称由命令行参数确定。下面应该清楚地说明我想做什么…我希望 使用以下命令执行: rterm --vanilla < c:/temp/myprog.txt --args XYZ rterm--vanilla
rterm --vanilla < c:/temp/myprog.txt --args XYZ
rterm--vanilla
c:/temp/myprog.txt的内容:
# I am using command line arguments
Args <- commandArgs(TRUE);
# Args[1] is the desired dataframe name
print(Args[1]);
# Create a simple dataframe
df <- c(c(1,2),c(3,4));
print(df);
# Save it
path <- 'c:/temp/mydata.rdata'
save(df, file=path);
# Clear the dataframe from memory
rm(df);
# Is it really gone?
print(df);
# Load the dataframe from disk
load(path);
# Did you get it?
print(df);
# --- This is where things start to go bad ---
# --- I know this is wrong, and I know why ---
# --- but it should make clear what it is ---
# --- I am attempting to do. ---
# Copy it to dataframe with name passed from command line
Args[1] <- df;
# Write it to disk with the new name
save(Args[1], file=path);
# Clear the dataframe from memory
rm(Args[1]);
# Is it really gone?
print(Args[1]);
# Load the dataframe from disk
load(path);
# Did you get it?
print(Args[1]);
# That's all
#我正在使用命令行参数
ArgsTry
(请参见分配)
如果Args[1]
包含字符串“XYZ”,则可以通过XYZ
引用数据帧
e、 g:
然后load('tmp.rda')
将使变量XYZ包含保存时包含的内容
所以,对你来说:
# to show it works:
path <- 'tmp.rda'
save(list=Args[1],file=path)
rm(list=ls())
load(path)
print(XYZ) # this will work.
#要显示它的工作原理:
路径代替
Args[1] <- df;
使用saveRDS
和readRDS
函数,而不是尝试将data.frame转换为自定义名称,是否有效
大概是这样的:
x <- data.frame(a=1:10, b=letters[1:10])
saveRDS('some.file.rds')
rm(x)
XYZ <- readRDS('some.file.rds')
## Carry on ...
x谢谢你,但那没用。也许你可以看看上面完整的程序输出。谢谢你,但那不起作用。也许你可以看看上面完整的程序输出。它确实有效,但是当你保存
时,你必须使用列表
参数输入你要保存的内容的名称,而不是df
(将使用namedf
保存):执行保存(list=Args[1],…)
。它有效。我已经包括完整的程序上面。多谢。
save(list='XYZ',file='tmp.rda')
# to show it works:
path <- 'tmp.rda'
save(list=Args[1],file=path)
rm(list=ls())
load(path)
print(XYZ) # this will work.
Args[1] <- df;
assign(Args[1],df)
x <- data.frame(a=1:10, b=letters[1:10])
saveRDS('some.file.rds')
rm(x)
XYZ <- readRDS('some.file.rds')
## Carry on ...