【问题标题】:R - creating data frames inside a for loopR - 在 for 循环中创建数据帧
【发布时间】:2016-04-15 15:13:52
【问题描述】:

我已经硬编码了这个:

s79t5 <- read.csv("filename1.csv", header = TRUE)
s81t2 <- read.csv("filename2.csv", header = TRUE)
etc.

subsets79t5 <- subset(s79t5, Tags!='')
subsets81t2 <- subset(s81t2, Tags!='')
...
subsets100t5 <- subset(s100t5, Tags!='')

现在我需要对其进行软编码。我快到了:

sessions <- c('s79t5', 's81t2', 's88t2', 's90t3', 's96t3', 's98t4', 's100t5')

for (i in 1:length(sessions)) {
    jFileName <- c(as.character(sessions[i]))
    j <- data.frame(jFileName)
    subset <- subset(j, j$Tags!='')
    assign(paste("subset", jFileName, sep = ""), data.frame(subset))
}

【问题讨论】:

  • 您好。你能更好地解释你到底想要做什么吗?我不太明白你的问题是什么。提供数据样本(可能使用head 函数)也会有所帮助。
  • 我已经创建了这些数据帧:subsets79t5、subsets81t2 等,但它们是硬编码的。现在,我需要对它们进行软编码,即使用 for 循环创建它们。谢谢。
  • Gregor 很长的回答可能是一个很好的起点:stackoverflow.com/a/24376207/1191259
  • @wade12 看起来您的代码创建了数据框,尽管它们是空的并且只有 1 个变量。你的输出应该是什么样的?您是否遇到某种错误?
  • 完美。我错过了“得到”。非常感谢 giraffehere,你是绝对的明星,周末愉快。

标签: r for-loop dataframe


【解决方案1】:

只是在这里抛出一个答案来结束这个问题。在 cmets 中进行了讨论。

您的行中需要get 函数:j &lt;- data.frame(jFileName)

应该是:j &lt;- as.data.frame(get(jFileName))

get 函数在现有对象中查找您给它的字符串字符(在本例中为jFileName)并返回该对象。然后我确保它是一个带有as.data.frame 的数据框。

以前,您实际上是在告诉 R 用字符串制作数据框。使用get,您现在正在引用您的实际数据集。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2014-08-05
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2020-05-25
    • 2023-03-23
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多