嗨,我正在尝试返回iris数据集中所有列的子集字符串。我要寻找的输出是“iris$Sepal”。长度','鸢尾花$萼片。宽度','虹膜$花瓣。长度','虹膜$花瓣。宽度','虹膜$物种'。
我尝试了下面的代码,使用paste0函数执行for循环,但没有返回任何内容。
for(i in colnames(iris)){
paste0('iris$',i , collapse ="")
}
我怎样才能解决这个问题?
paste0
是矢量化的,因此您可以直接执行
paste0("iris$", names(iris))
#[1] "iris$Sepal.Length" "iris$Sepal.Width" "iris$Petal.Length"
# "iris$Petal.Width" "iris$Species"
在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"
或者可以将其存储在字符向量中
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"
使用您自己的逻辑,您的代码可以更正如下:
for( i in 1:length(colnames(iris)) ){
print( paste0('iris$', colnames(iris)[i] , collapse ="") )
}
[1] "iris$Sepal.Length"
[1] "iris$Sepal.Width"
[1] "iris$Petal.Length"
[1] "iris$Petal.Width"
[1] "iris$Species"
然而@ronak-伊朗王的解决方案是模式优雅。我只是想展示可以对您的特定循环进行的更正。