我正在做一个函数,我想以一种特殊的方式调用一列。
初始化数据
a <- c(1,2,3,4,5)
b <- c(6,7,8,9,10)
c <- c(1,2,3,4,5)
d <- c(6,7,8,9,10)
df <- as.data.frame(cbind(a,b,c,d))
表格功能的调用列
Func <- function(df){
X <- df
Y <- names(M)
for(i in 1:2){
table(X$___,X$___)
}}
麻烦是我不知道如何调用列。
我希望它在循环中与table(X$a, X$b)
等效。
我尝试了此操作,但没有成功
for(i in 1:2){
Q <- Y[i]
W <- Y[j]
table(X$Q,X$W)
}}
对于我正在使用的函数来说,有必要以table(X$a, X$b)
的形式创建表,而我不知道如何在for循环中实现该功能吗?
答案 0 :(得分:1)
您需要使用两个[[
来获取列的内容:
df <- datasets::mtcars
for (i in 1:2) df[[i]]
这也适用于列名
for (i in names(df)) df[[i]]
虽然不确定您要实现的目标。您也可以这样做:
lapply(df[1:2], table)
答案 1 :(得分:1)
您可以使用列索引并在函数中使用它,而不用使用列名来调用table
,因此您不必担心如何调用列。
替换for
循环并使用
table(df[1:2])
这将为您带来预期的结果。
答案 2 :(得分:1)
您还可以使用列索引遍历col
。在以下代码中,您可以遍历iris
数据集列:
for(i in 1:length(colnames(iris))){
print(iris[,i]) # to get single column
print(iris[,c(i,i+1)]) # to get multiple column data
}