在字符串列表上应用函数并创建新列

时间:2016-04-05 20:13:37

标签: r

我想将一个函数应用于字符串列表,同时在每个字符串的同一数据框中创建一个新列,用于存储新数据。我使用R.

对于单个字符串/变量,代码如下所示。该函数在列中搜索字符串,这就是将函数应用于字符串的原因:

dt$Q1.var1 <- myfunction("var1")

我尝试了各种配置,但这里有一对不能正常工作。首先,以下内容创建新列,但使用相同的值填充每列。根据我的数据,我知道这是不对的:

varlist = c("var1","var2","var3") 
Q1list = rep("Q1", length(varlist)

     dt[,paste(Q1list, varlist, sep".")] <- sapply(dt[,varlist], function(x) myfunction(x))

我的第二次尝试是使用for循环,但结果相同(带有新值的新列,但所有值都相同)。

for (var in varlist) {
  dt[,paste(Q1list, varlist, sep=".")] <- myfunction(varlist)
}

for循环也会产生50个警告,完全相同:

1: In stri_detect_regex(string, pattern, opts_regex = attr(pattern,  ... :
  longer object length is not a multiple of shorter object length

非常感谢任何帮助。似乎我错过了以某种方式在字符串上迭代函数的关键组件。我还没有能够在stackoverflow或其他地方找到解决这个问题的任何内容,尽管这可能是因为我缺乏用可搜索术语表达问题的语言。

0 个答案:

没有答案