R:创建合并两列的函数

时间:2016-10-23 18:05:44

标签: r

很抱歉,如果我的问题与我的问题类似,我无法找到我要找的东西。

我有一个包含两列的数据集,一列是平均值,另一列是sd值。 我想创建第三列,即" mean(sd)"。我已经能够使用paste()做到没有问题。 现在我想要做的是创建一个函数来对各种数据集/变量进行操作。我有以下内容:

a=round(runif(20,0,50),2)
b=round(runif(20,0,1),2)
data<-cbind(a,b)

merge.meansd<-function(data,x,y,z){
  data$z <- paste(data[,x]," (",data[,y],")",sep = "")
}

merge.meansd(data,"a", "b","c")

我得到以下无法解决的问题:

  

将LHS强制转移到列表

我的问题的任何想法或解决方案?

由于

1 个答案:

答案 0 :(得分:1)

如果要在与两个数字向量相同的数据结构中包含字符列,您几乎肯定希望使用数据框而不是矩阵(如上面的@RichScriven注释) 。

merge.meansd <- function(dd,x,y,z) {
   dd <- as.data.frame(dd)
   dd[[z]] <- paste0(data[,x]," (",data[,y],")")
   ## or dd[[z]] <- sprintf("%f (%f)",dd[,x],d[,y])
   return(dd)
}

ddm <- merge.meansd(data,"a","b","c")

此外:

  • 我想你想要返回整个数据框,而不仅仅是合并的列?
  • 您无法使用$ - 使用变量值进行索引,您需要[[ ]]