我有许多可重复命名的数据框:
df.1 <- data.frame("x"=c(1,2), "y"=2)
df.2 <- data.frame("x"=c(2,4), "y"=4)
df.3 <- data.frame("x"=2, "y"=c(4,5))
Run Code Online (Sandbox Code Playgroud)
所有数据帧都具有相同的行数和列数.我想绑定它们,添加一个具有数据帧ID的列.id将是源数据帧的名称.
我知道我可以手动执行此操作:
rbind(data.frame(id = "df.1", df.1),
data.frame(id = "df.2", df.2),
data.frame(id = "df.3", df.3))
Run Code Online (Sandbox Code Playgroud)
但是它们中有很多,它们的数量将在未来发生变化.
我尝试写for循环,但他们没有工作.我想这是因为我将它们基于包含数据帧名称的字符串列表而不是数据帧本身列表.
df_names <- ls(pattern = "df.\\d+")
for (i in df_names) {
i$id <- i
i
}
Run Code Online (Sandbox Code Playgroud)
...但我还没有找到任何自动创建具有可重复名称的数据框列表的方法.即使我这样做,我也不确定上面的for循环是否可行:)
我找不到令人满意的教程,可以解释我如何使用应用函数的所有可能性.我仍然是一个新手,但这通常会派上用场,并显着简化我的代码.所以这是我的例子......我有一个看起来像这样的数据框:
> head(p01)
time key dwell
1 8.13 z 0.00
3 8.13 x 1.25
5 9.38 l 0.87
7 10.25 x 0.15
9 10.40 l 1.13
11 11.53 x 0.45
Run Code Online (Sandbox Code Playgroud)
进入R:
p01 <- structure(list(time = c(8.13, 8.13, 9.38, 10.25, 10.4, 11.53),
key = c("z", "x", "l", "x", "l", "x"), dwell = c(0, 1.25,
0.869, 0.15, 1.13, 0.45)), .Names = c("time", "key", "dwell"), row.names = c(1L, 3L, 5L, 7L, 9L, 11L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
现在我想计算每个字母的出现次数p01$key
并打印出来p01$occurences
,这样结果看起来像这样:
time key …
Run Code Online (Sandbox Code Playgroud)