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
(将使用name
df
保存):执行
保存(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 ...