我正在使用 bash 脚本编写和运行 R 脚本:因为我不精通 RI,所以我曾经在 bash 脚本中编写循环和条件,然后在 R 脚本或“这里的文档”中进行翻译......你可以想象以这种方式生成的 R_scripts 变得非常长并且难以阅读......所以我学习了如何用 R 编写循环和条件,但我发现命令 system() 有一些困难,所以我意识到 shell 脚本在某种程度上是必要的,如果我不想因为引用和转义而发疯...... ;-) 我遇到的第一个问题是:我想声明一个像这样的Rarr="file_1", "file_2", "file_3"
ecc 变量,因为我想将它插入到 R_script
cat>my_R_script.R<<EOF
my_arr<-c(${Rarr})
do something with my_arr
EOF
需要引号,因为如果没有引用 file_names,R 会提示您找不到名为 file_names 的对象
我尝试在数组定义的逗号分隔元素中遵循第一个解决方案,IFS="" ,""
但似乎当Rarr="${arr[*]}";echo "${Rarr}"
arr 的元素仅由 ${IFS} 的第一个字符分隔时......在我的情况下,它们将被分隔"
有没有办法避免这种情况?
所以基本上我的问题是:如何强制 shell 考虑所有字符${IFS}
?
无论如何,我找到了两个解决我的问题的方法.. 第一个
arr=($(ls -1 | tail))
new_IFS="\" ,\""
Rarr=${arr[0]}
for ((i=1;i<${#arr[@]};i++))
do
Rarr="${Rarr}${new_IFS}${arr[$i]}"
#echo "${Rarr}"
done;
Rarr=\""${Rarr}"\"
#echo ${Rarr}
另一个带有参数替换...但我想知道是否存在直接解决我的问题的方法
预先感谢您的帮助