gpt4 book ai didi

r - 在 R 中创建一个变量并添加到循环中的数据框

转载 作者:行者123 更新时间:2023-12-04 15:52:05 32 4
gpt4 key购买 nike

R 的新手,我试图在“for”循环中重命名/创建一个变量,将计数器“i”分配给它的名称,并将其保存到数据框中。我找不到将计数器分配给名称的方法:

 df.final <- NULL
for(i in 1:n) {
print(i)
v1[i] <- df$v1 ############## I need help with this
df$v1[i] <- v1[i] ############## and this
if(i==1){
df.final <- df
} else {
df.final <- merge(df.final, df, by = "ID")
}
}

我发现了以下内容:

 tmpvar <- paste("v1", i, sep= "")
assign(tmpvar, df$v1)

这有助于创建特定于循环的变量(第一部分),但我如何将该变量添加到数据框(第二部分)?

我将不胜感激。

谢谢,阿米尔

最佳答案

欢迎来到 R 社区!如果您可以使用示例代码(输入,所需输出)进一步阐明您的问题,那将会有所帮助。我假设,您正在尝试在每个循环中创建一个新变量?也许以下帮助:

假设我们将进行 3 次迭代。我将创建一个包含 2 列的简单示例数据集

n <- 3
# create an example dataframe with 2 columns
df<- as.data.frame(rbind(c(1,1),c(2,2),c(1,2)))
colnames(df)<- c("v1","ID")

接下来,创建一个空的 data.frame。在最后一步中,如果 df.final 没有具有该名称的列,则无法通过列 ID 加入!

`df.final <- data.frame(matrix(ncol = 2, nrow = 0))
colnames(df.final)<- c("v1","ID")

让我们做一个for循环

for(i in 1:n) {
df[paste(colnames(df[1]),toString(i),sep ="_")] <- df[1]
if(i==n){
df.final <- df
} else {
df.final <- merge(df.final, df, by = "ID") #there is no point of doing the join in my example!
}
}

因为我不确定你到底想做什么,所以我写了一些代码,复制第 1 列的内容并将其写入与第 1 列同名的列加上后缀 I。所以让我们看声明:

colnames(df[1]) 返回数据帧第一列的名称作为字符串 (var1)toString(i) 将迭代器 i 转换为字符串通过将 baste 函数与 sep ="_" 结合使用,您可以将第一列的名称和迭代器组合成一个字符串。

df["varname"] 

是一种引用数据框中列的方法。

你的输出看起来像这样

  v1 ID v1_1 v1_2 v1_3
1 1 1 1 1 1
2 2 2 2 2 2
3 1 2 1 1 1

希望对您有所帮助!

关于r - 在 R 中创建一个变量并添加到循环中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53465405/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com