【发布时间】:2020-03-22 08:45:10
【问题描述】:
上下文 我读了一个 csv 并将内容分成 11 个不同的数据框。 然后我将数据框放入这样的列表中。
SourceCSV= read.csv("dt1Summary.csv",header=TRUE, sep = ';')
df1=SourceCSV[SourceCSV$Number == 122]
df2=SourceCSV[SourceCSV$Number == 430]
...
df11=SourceCSV[SourceCSV$Number == 1830]
dfList = list(df1, df2, ..., df11)
然后我像这样用 NA-Values 清理了行的数据框
for (i in 1:length(dfList)) {
dfList[[i]]=dfList[[i]][complete.cases(dfList[[i]]),]
}
现在,当我尝试为列表中的每个元素以相同的方式运行需要修改数据框中的单元格的任何代码时,我似乎无法弄清楚如何正确调用内容。
我想在每个数据框的每个单元格中添加一个值为 1 的列。
但是当我跑步时:
for (i in 1:length(dfList)){
dfList[[i]]$extraCol = 1
}
数据框被 11 个值替换。
您能解释一下如何正确调用列表中数据框中的单元格吗? 以及如何在不使用长度方法的情况下正确循环列表?
【问题讨论】:
-
df1=SourceCSV[SourceCSV$Number == 122]这看起来不正确。是不是少了一个逗号? -
试试:
df_lst1 <- lapply(dfList, function(df) { df <- df %>% mutate(VAR = 1) })(library(tidyerse)) -
除此之外:您的循环为我工作:
dfList = list(iris, iris); for (i in 1:length(dfList)){ dfList[[i]]$extraCol = 1 } -
实际上我刚刚意识到您的代码适用于我创建的虚拟列表数据框...您能提供一个可重现的示例吗?
dput(YOURDATA)或dput(head(YOURDATA)).
标签: r list dataframe for-loop iteration