循环中i的名称- R

qzwqbdag  于 2023-04-03  发布在  其他
关注(0)|答案(4)|浏览(122)

我尝试提取循环中使用的i列的名称:

for (i in df){
  print(name(i))
}

Python代码解决方案示例:

for i in df:
  print(i)

PS:如果我使用与Python相同的代码,R会给我列值(但Python只给出了名称)。
编辑:它必须在一个循环中。因为我会用这个做更详细的事情。

frebpwbc

frebpwbc1#

for (i in names(df)){
  print(i)
}
2exbekwf

2exbekwf2#

就这么做

names(df)

打印df中的所有列名。不需要循环,除非您想对每一列执行更详细的操作。
如果需要第i个列名:

names(df)[i]
xt0899hw

xt0899hw3#

您可以使用purrr包中的imap函数来代替循环。在编写代码时,.x是对象,.y是名称。

df <- data.frame(a = 1:10, b = 21:30, c = 31:40)

library(purrr)

imap(df, ~paste0("The name is ", .y, " and the sum is ", sum(.x)))

# $a
# [1] "The name is a and the sum is 55"
# 
# $b
# [1] "The name is b and the sum is 255"
# 
# $c
# [1] "The name is c and the sum is 355"

这只是编写以下Base R代码的一种更方便的方法,它给出了相同的输出:

Map(function(x, y) paste0("The name is ", y, " and the sum is ", sum(x))
    , df, names(df))
u3r8eeie

u3r8eeie4#

您可以尝试以下代码:

# Simulating your data
a <- c(1,2,3)
b <- c(4,5,6)

df <- data.frame(a, b)

# Answer 1
for (i in 1:ncol(df)){
  print(names(df)[i]) # acessing the name of column
  print(df[,i]) # acessing column content
  print('----')
}

或者这个替代方案:

# Answer 2
columns <- names(df)

for(i in columns) {
  print(i) # acessing the name of column
  print(df[, i]) # acessing column content
  print('----')
}

希望有帮助!

相关问题