【发布时间】:2014-12-02 22:14:35
【问题描述】:
我正在尝试获取数据框中数字列的密度并将它们分配给新变量。
我正在使用这个功能,但是当我使用它时,它什么也没有发生。我有点迷路了……你能帮帮我吗?
densities <- function(data.input, dense){
for(i in 1:ncol(data.input)){
if(is.numeric(data.input[,i]) == TRUE){
dense <- density(data.input[, i])
names(dense) <- paste(c("density"), colnames(data.input)[i], names(data.input), sep = ".")
return(dense) ## I don't know how to make it return the created variable and have it in the environment
}else{
next
}
}
}
如果答案太明显,请见谅
【问题讨论】:
-
if() 测试将始终为 FALSE,就像当前编写的那样。需要将内部右括号移到“==”之前。用
==TRUE进一步测试is.函数也是多余的,所以不要在脚下射击你的代码。您还需要停止覆盖循环中的值。 -
还有这个写法,处理完第一个数值列后,函数会返回。
-
对象
density每次循环都会被替换,你只会得到一个结果,这将是最后一个赋值。
标签: r for-loop environment-variables probability-density