我有一个数据框AData,我从中提取了其列名称的一个子集,即SpecialNames。我想知道如何在for循环中引用这些列。
我当前的代码如下所示:
SpecialNames <- setdiff(colnames(AData), colnames(BData))
for ( i in SpecialNames ) {
AData$i <- NULL # Do something to AData$i such as delete it or something else
}
Data,AData $ i似乎没有引用名称为i的数据框AData的列。有没有其他语法可以给我呢?
我在here帖子中读到:“$是用于交互使用。相反,在编程时,即当要解释列名称时,您需要使用[或[[,因此我将sample $ i.imp替换为sample [[paste0(i,'.impt')]]“。
基于此评论,我猜想也许我一直在寻找的语法是AData $ [i]或AData $ [[i]]或AData $ [[paste0(i)]],但这些似乎都不起作用。
有任何想法吗?
最佳答案
不知道自己在做什么,很难说for
循环是否可行。但是,希望这可以帮助您上路:
## Sample data is always nice
set.seed(1)
mydf <- data.frame(A = c(1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4),
B = LETTERS[c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2)],
matrix(sample(100, 36, replace = TRUE), nrow = 12))
## Here is your vector of special names
specialnames <- setdiff(names(mydf), c("A", "B"))
## Here is a `for` loop that will print the first two rows
## of each column named in "specialnames"
## THIS IS NOT HOW I WOULD NORMALLY DO THIS IN R
## -------------------------------------------------------
for (i in seq_along(specialnames)) {
print(head(mydf[specialnames[i]], 2))
}
注意事项(也许):
for (i in seq_along(specialnames))
:seq_along
(或i in 1:length(specialnames)
或类似的东西)很重要。 [
和[[
的使用。尝试以下操作以了解它们的作用:mydf["A"]
mydf[["A"]]
mydf[1, c("A", "B")]
关于r - 循环遍历R中列名称的特定子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19840033/