需要帮助通过R中的串联循环

spi*_*arn 1 for-loop r

嗨,我正在尝试返回虹膜数据集中所有列的子集的字符串。我正在寻找的输出是'iris $ Sepal.Length','iris $ Sepal.Width','iris $ Petal.Length','iris $ Petal.Width','iris $ Species'。

我在下面尝试了以下代码,使用paste0函数进行了for循环,但未返回任何结果。

for(i in colnames(iris)){
    paste0('iris$',i , collapse ="")
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Ron*_*hah 5

paste0 已向量化,因此您可以直接执行

paste0("iris$", names(iris))
#[1] "iris$Sepal.Length" "iris$Sepal.Width"  "iris$Petal.Length" 
#    "iris$Petal.Width"  "iris$Species" 
Run Code Online (Sandbox Code Playgroud)

在for循环中,您需要明确地告诉R做事

for(i in colnames(iris)){
   print(paste0('iris$',i))
}

#[1] "iris$Sepal.Length"
#[1] "iris$Sepal.Width"
#[1] "iris$Petal.Length"
#[1] "iris$Petal.Width"
#[1] "iris$Species"
Run Code Online (Sandbox Code Playgroud)

或者您可以将其存储在字符向量中

string_name <- character(length = ncol(iris))
for(i in seq_along(names(iris))){
   string_name[i] <- paste0('iris$',names(iris)[i])
}

string_name
#[1] "iris$Sepal.Length" "iris$Sepal.Width"  
#"iris$Petal.Length" "iris$Petal.Width"  "iris$Species"   
Run Code Online (Sandbox Code Playgroud)