我想使用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。 为什么会这样?
答案 0 :(得分:0)
exo.mat[] <- apply(new.dt, 2, planetdata)
R通常按值传递,而不是按引用传递。修改函数内部的变量通常不会在外部修改它。您需要明确保存值。
另外,您将空矩阵传递给apply()
,它只是看起来不那样,因为您使用new.dt
参数创建了一个匿名函数,该函数与new.dt
不同您在会话中拥有的{1}}变量。