我在for
循环中使用用户定义的函数时遇到问题,如下面的代码所示。这似乎是我尝试在函数中输入索引的方式的问题,因为每当我尝试运行它时,我都会收到以下消息。
错误:$运算符对原子矢量无效
但是,该功能可以自行运行。当我将它与循环外的一个变量一起使用时,它会返回正确的结果。
基本上,我想要做的是:
可能我的整个方式都是错误的。甚至可以使用他们的名字列表来调用变量吗?示例输入数据使用read.delim
导入R,如下所示:
正在读取大约1,400个文件。
## Import files:
temp = list.files(pattern="*.csv") #Filenames from working directory
for (i in 1:length(temp)) {
#Clean data to include only RGB
assign(temp[i], read.delim(temp[i],sep=";", header = T, nrows = 6))
}
allvars <- ls(all.names = T) #List all variables
#Find RGB classes and name
getClasses <- function(variable) {
red <- variable$R[3:5]
green <- variable$G[3:5]
blue <- variable$B[3:5]
classes <- data.frame(red, green, blue)
print(classes)
}
#This is where the problem happens:
for (i in 1:length(allvars)) {
#Apply getClasses function to current variable and store new data
assign(allvars[i], getClasses(allvars[i]))
}
#Error: $ operator is invalid for atomic vectors