r在函数调用

时间:2017-11-01 16:46:32

标签: r data.table

我正在研究数据表结构,我想基于使用现有数据表列的函数调用来创建新列。 这是我目前的代码:

`for(i in 1:nbNewColumns)
    {
        existingColumn <- paste0("W", toString(i))
        newColumnName <- paste0("ID", toString(i))
        myDT[, (newColumnName) := MyFunction(param1, eval(existingColumn))]
    }`   

我现有的列是W1,W2,...,Wn(单词)
我的新列是ID1,ID2,...,IDn。 (字id)
此代码不会生成错误,但myFunction的第二个参数是列名,而不是列值 我根据eval,quote,DT [[]]测试了很多不同的语法,但是没有任何作用,我无法将列值发送到myFunction。
如果我用常量替换函数调用,它就可以工作。

[更新] 该问题与myFunction的第二个参数的类型有关:

myFunction <- function(pWordsTable, pWord)
    {
        return(pWordsTable[word == pWord,]$wordId)
    }

函数的第二个参数通常是一个字符串(一个单词),但get(existingColumn)的结果是一个列表,所以我收到一条错误信息:
Error in [.data.table (pWordsTable, word == pWord, ) : RHS of == is length 3 which is not 1 or nrow (31248). For robustness, no recycling is allowed (other than of length 1 RHS). Consider %in% instead.

[更新2]
我定义了一个专门的函数来处理单词列表,它工作正常 谢谢你的帮助。

0 个答案:

没有答案