将函数应用于R

时间:2015-10-19 04:00:23

标签: regex r function apply

我想使用apply来使用我用来通过正则表达式提取数据的函数并用它填充矩阵。

planetdata = function(dline) {
  new_line = unlist(strsplit(as.character(dline),"</td><td>"))
  new_first_value = substring(new_line[1],9)
  new_last_value =substring(new_line[11],1,nchar(new_line[11])-10) 
  new_line[1] <- new_first_value
  new_line[11] <- new_last_value 
  new_data <- new_line
  return(new_data)

}


new.dt = dt[21:1912]
exo.mat = matrix(data = NA, nrow=1892, ncol = 11)
colnames(exo.mat) <- c(exo.col.names)
apply(exo.mat,2,function(new.dt) planetdata(new.dt))

但是,我的矩阵不会改变,所有值仍然是NA。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

你是说这个意思吗? exo.mat[] <- apply(new.dt, 2, planetdata)

R通常按值传递,而不是按引用传递。修改函数内部的变量通常不会在外部修改它。您需要明确保存值。

另外,您将空矩阵传递给apply(),它只是看起来不那样,因为您使用new.dt参数创建了一个匿名函数,该函数与new.dt不同您在会话中拥有的{1}}变量。