【发布时间】:2017-05-13 16:30:29
【问题描述】:
我在 R 中使用 10 个列表(files1、files2、files3、...files10)。每个列表包含多个数据框。
现在,我想从每个列表中的每个数据框中提取一些值。
我打算使用 for 循环
nt = c("A", "C", "G", "T")
for (i in files1) {
for (j in nt) {
name = paste(j, i, sep = "-") # here I want as output name = "files1-A". However this doesn't work. How can I get the name of the list "files1"?
colname = paste("percentage", j, sep = "") # here I was as output colname = percentageA. This works
assign(name, unlist(lapply(i, function(x) x[here I want to use the column with the name "percentageA", so 'colname'][x$position==1000])))
}
}
所以,我在使用列表名称并将它们分配给变量时遇到了麻烦。
我只知道循环遍历第一个列表,但是否也可以立即遍历我的所有列表?
换句话说:如何将下面的代码放入 for 循环中?
A_files1 = unlist(lapply(files1, function(x) x$percentageA[x$position==1000]))
C_files1 = unlist(lapply(files1, function(x) x$percentageC[x$position==1000]))
G_files1 = unlist(lapply(files1, function(x) x$percentageG[x$position==1000]))
T_files1 = unlist(lapply(files1, function(x) x$percentageT[x$position==1000]))
A_files2 = unlist(lapply(files2, function(x) x$percentageA[x$position==1000]))
C_files2 = unlist(lapply(files2, function(x) x$percentageC[x$position==1000]))
G_files2 = unlist(lapply(files2, function(x) x$percentageG[x$position==1000]))
T_files2 = unlist(lapply(files2, function(x) x$percentageT[x$position==1000]))
....
A_files10 = unlist(lapply(files10, function(x) x$percentageA[x$position==1000]))
C_files10 = unlist(lapply(files10, function(x) x$percentageC[x$position==1000]))
G_files10 = unlist(lapply(files10, function(x) x$percentageG[x$position==1000]))
T_files10 = unlist(lapply(files10, function(x) x$percentageT[x$position==1000]))
【问题讨论】:
-
names(fileS1)是否返回NULL? -
@joel.wilson: 是的
-
发布示例数据会很棒,例如 2-3 个文件有工作示例。见how to make a reproducible example。通常,为了读取多个文件,我创建了一个函数(variable1,variable2),它从单个文件返回一个数据帧。然后我使用
dplyr包和group_by(variable1, variable2)do(myfunction(.$variable1,.$variable2))来读取多个文件。在单个数据框中获取所有数据非常棒。 -
@PaulRougieux:我添加了更多解释。现在清楚了吗?
-
您仍然没有提供 file1, file2, ... 的样本数据。很高兴知道您尝试了什么,但没有明确的输入和明确的输出,很难给您一个有效的答案。只需提供来自一到两个文件的示例输入数据和所需的输出。