我有一个叫做回报的数据框。如何让代码更简洁?我尝试过使用apply,lappply和sapply,但它们似乎改变了数据框的结构,因此我无法生成相关矩阵。澄清:下面的代码有效,但我想使它更简洁。谢谢!如何在数据框中将R中的所有非数值转换为NAs?
returns$VIT <- as.numeric(as.character(returns$VIT))
returns$EFA <- as.numeric(as.character(returns$EFA))
returns$VWO <- as.numeric(as.character(returns$VWO))
returns$VIG <- as.numeric(as.character(returns$VIG))
returns$VNQ <- as.numeric(as.character(returns$VNQ))
returns$iPath.DJP <- as.numeric(as.character(returns$iPath.DJP))
returns$iShares.MUB <- as.numeric(as.character(returns$iShares.MUB))
cor(returns, use="pairwise.complete.obs")
编辑:下面的测试代码不工作,我想弄清楚如何使它工作。
test <- data.frame(c(.04,.2,"blah"),c(.01,.24,"blah"))
colnames(test) <- c("VIT", "EFA")
new <- apply(test, 2, function(x) as.numeric(as.character(x)))
cor(test, use="pairwise.complete.obs")
尝试'应用(返回2,函数(x)as.numeric(as.character(x))'。欢迎来到SO。一般的做法是,如果可以的话,包含一个可重复使用的小例子,这样我们就可以运行你的代码 – 2013-05-12 02:41:00
新建< - 应用(返回2,函数(x)as.numeric(as.character(x)))创建行[1,] [2,]而不是1,2。运行cor(回车,使用=“pairwise.complete.obs”) – user2374133 2013-05-12 02:54:09
具体说明什么是不行的,什么是错误?你在测试时运行的是'cor'并不是新的 – 2013-05-12 03:55:13