阻止R解析〜到用户的主目录

时间:2012-10-10 12:28:23

标签: string r parsing eval tilde

我尝试在R中运行以下脚本(最小化示例):

library(neuralnet)

arrhythmia <- read.csv(file=".../arrhythmia-edited.csv", head=TRUE, sep=",")

# create the first parameter for neuralnet formular 
# format like 'classification ~ attribute1 + attribute2 + ...
# i have so many features, that why i use a for
input <- ""
for (i in 1:259)
  input <- paste(input, paste(paste('arrhythmia[,',i),'] +'))
input <- paste(input, 'arrhythmia[,260]')

# create string for function call
nnet.func <- paste('neuralnet(arrhythmia[,261] ~', input)
nnet.func <- paste(nnet.func, ', data=arrhythmia)')

# call function neuralnet
# should be like: neuralnet(arrhythmia[,261] ~ arrhythmia[,1] + arrhythmia[,2] + ... + arrhytmia[,260], data=arrhythmia)
net.arrhythmia <- eval(parse(nnet.func))

问题是R正在解析这个(使用Linux):

'neuralnet(arrhythmia[,261] /home/user  arrhythmia[, 1 ] + ....

如何防止R解析〜进入/ home / [user-directory]?

1 个答案:

答案 0 :(得分:8)

尝试使用,text=参数。现在你正在使用,file= parse参数,因为它是第一个:

> args('parse')
function (file = "", n = NULL, text = NULL, prompt = "?", srcfile = NULL, 
    encoding = "unknown") 

> parse("test ~ test")
Error in file(filename, "r") : cannot open the connection

> parse(text="test ~ test")
expression(test ~ test)