rdata:迭代数据帧列名的方法?

rdata:迭代数据帧列名的方法?,r,rdata,R,Rdata,我有大约30行代码可以做到这一点(获得Z分数): 谢谢你的朋友。我认为你是对的,apply()可能是一个不错的选择 例如: data <- array(1:20, dim=c(4, 5)) data.zscores <- apply(data, 2, function(x) (x-mean(x, na.rm = TRUE))/sd(x, na.rm = TRUE)) dataAdata.frame是一个列表,因此您可以使用lappy。不要在数据框上使用应用,因为这将强制使

我有大约30行代码可以做到这一点(获得Z分数):


谢谢你的朋友。

我认为你是对的,apply()可能是一个不错的选择

例如:

data <- array(1:20, dim=c(4, 5))

data.zscores <- apply(data, 2, function(x)
    (x-mean(x, na.rm = TRUE))/sd(x, na.rm = TRUE))

dataA
data.frame
是一个列表,因此您可以使用
lappy
。不要在
数据框上使用
应用
,因为这将强制使用
矩阵

lapply(data, function(x) (x - mean(x,na.rm = TRUE))/sd(x, na.rm = TRUE))
或者您可以使用
scale
对向量执行此计算

lapply(data, scale)

您可以直接翻译
python
风格的方法

for(col in names(data)){
   data[[col]] <- scale(data[[col]])
}
for(名称中的列(数据)){
数据[[col]]查看此项
我遍历数据帧以识别NA行

for(i in names(houseDF)){
  print(i)
  print(nrow(houseDF[is.na(houseDF[i]),]))
  print("---------------------")
}

您需要查看
colMeans
and.usinglappy返回一个列表,以便返回一个数据帧:data.frame(lappy(data,scale))
for(col in names(data)){
   data[[col]] <- scale(data[[col]])
}
for(i in names(houseDF)){
  print(i)
  print(nrow(houseDF[is.na(houseDF[i]),]))
  print("---------------------")
}