我现在感到非常愚蠢的一个数据帧的列的功能,但我不能拿出超过为环...R:有效的方式来申请根据
我有一个数据帧带有数字和因子栏。我只是想要缩放数字列,并保留阶乘列。例如
> set.seed(160)
> df1 <- data.frame(as.data.frame(matrix(rnorm(8), ncol=2)),
V3=factor(c("A", "A", "B", "B")))
> df1
V1 V2 V3
1 0.6185496 -0.6410203 A
2 -0.8722777 2.6520986 A
3 0.8529240 -1.4156009 B
4 0.3678875 -1.1615607 B
我想获得
> df1
V1 V2 V3
1 0.4901808 -0.2642698 A
2 -1.4493527 1.4780179 A
3 0.7950968 -0.6740765 B
4 0.1640750 -0.5396717 B
用更高效的指挥比
for(i in 1:ncol(df1)) {
if(is.factor(df1[,i])) {df1[,i] <- df1[,i]}
else{df1[,i] <- scale(df1[,i])}
}
我试过的lapply(), sapply(), if(), ifelse()
各种组合,但似乎没有任何工作(apply
没有按”因为df被转换成矩阵,我失去了因子/数字结构)。有什么建议么?
注:我不尝试应用基础上,值的函数列而是基于类型列。
'指数< - sapply(DF1,is.factor); df1 [index] < - scale(df1 [index])',但它仍然是无关紧要的;-) –
OPS,我以为我在SE上张贴;)谢谢! – jeiroje