让R和voodoopad互动

时间:2014-03-18 10:12:08

标签: r macos applescript

我正在大量使用voodoopad和R.我想为voodoopad编写以下功能: 如果我在voodoopad中选择一些文本并键入(假设)Cmd-R,则所选文本将被评估为先前在终端会话中启动的R会话。

我有很好的编程和脚本编写技能,但对系统编程没有任何了解。如果有人可以给我一些关于如何实现这个项目的提示,或者甚至只是在合理的时间内将这个功能的可行性给我,我会很享受。

更新

这是一个用于向R会话运行给定命令“CommandLine”的AppleScript

set CommandLine to "plot(density(rnorm(10000)))"
try
tell application "R"
    activate
    with timeout of 90000 seconds
        cmd CommandLine
    end timeout
end tell

结束尝试

所以我想我现在需要的是能够将一个字符串从voodoopad传递给一个AppleScript并执行它。有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

试试这个:

  tell application "Voodoopad"
    set commandLine to (current selection of window 1) as text
    if commandLine is not "" then
      tell application "R"
          activate
          with timeout of 90000 seconds
              cmd CommandLine
          end timeout
      end tell
    else
      display dialog "Select a command first."
    end if
  end tell

也可以将commandLine设置为完整页面。

  tell application "Voodoopad"
    tell document 1
      set commandLine to text of page 1
      if commandLine is not "" then
        tell application "R"
            activate
            with timeout of 90000 seconds
                cmd CommandLine
            end timeout
        end tell
      else
        display dialog "Select a command first."
      end if
    end tell
  end tell

显然,第一种情况下的选定文本或第二种情况下文档1的第1页需要包含有效命令。