分配for循环以在单个列R

时间:2018-03-02 10:57:32

标签: r for-loop

以下是制表符分隔的txt文件中的数据:

https://drive.google.com/open?id=1SfqY8FBnpLCs8TKySK_HYR6kzWChLRjb

有没有办法为以下代码制作for循环:

ka1 <- dput(as.numeric(na.omit(data$Ka1)))

ka2 <- dput(as.numeric(na.omit(data$Ka2)))

ka3 <- dput(as.numeric(na.omit(data$Ka3)))

reference <- dput(as.numeric(na.omit(data$Reference)))

ks1 <- dput(as.numeric(na.omit(data$Ks1)))

ks2 <- dput(as.numeric(na.omit(data$Ks2)))

ks3 <- dput(as.numeric(na.omit(data$Ks3)))

我正在尝试将df的每个列放入分配给向量的列表中:

> Reference
[1] 1401

> Ka1
[1]  57 108 333 510

我尝试了以下内容,但我不了解整个过程。

for (i in data) {
  names(data) <- deput(as.numeric(na.omit(data$i)))
}

2 个答案:

答案 0 :(得分:0)

这样的事情:

for(var in names(data)) {
    data[[var]] <- dput(as.numeric(na.omit(data[[var]])))
}

答案 1 :(得分:0)

要将数据列提取到列表中,您可以执行以下操作:

data_list <- lapply(data, function(x) as.numeric(na.omit(x)))

data_list[["Ka1"]]
[1]  57 108 333 510

这是以下for循环的简短版本:

data_list <- vector(length = ncol(data), mode = "list")
names(data_list) <- names(data)

for (i in names(data)) {
  data_list[[i]] <- as.numeric(na.omit(data[[i]]))
}